Несколько служб / местоположений делает приложение перенаправляет неправильно - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть сервер, на котором я хотел бы хранить несколько сервисов, поэтому я создал отдельное местоположение для каждого из них, как показано ниже:

server {
    listen 80;
    server_name my.server.com;

    location ~* "^([\/:?=&#]{1}[\da-z\.-]+)*[\/\?]?$" {
        return 302 https://$host$request_uri;
    }

    include /etc/nginx/conf.d/tpl/letsencrypt;    
}

server {
    listen 443 ssl;
    server_name my.server.com;

    #some angular application
    location /admin {
        set $upstream my_server_ng_admin:80;
        proxy_pass  http://$upstream;
        include /etc/nginx/conf.d/tpl/host;
        include /etc/nginx/conf.d/tpl/gzip;        
    }

    #another angular application
    location /app {
        set $upstream my_server_ng_app:80;
        proxy_pass  http://$upstream;
        include /etc/nginx/conf.d/tpl/host;
        include /etc/nginx/conf.d/tpl/gzip;        
    }

    #some nodejs service
    location /api {
        set $upstream my_server_nodejs:9021;
        proxy_pass  http://$upstream;
        include /etc/nginx/conf.d/tpl/host;
    }

    include /etc/nginx/conf.d/tpl/ssl;
}

С /etc/nginx/conf.d/tpl/gzip, содержащим

gzip on;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
gzip_types text/plain text/css text/javascript text/xml application/json application/javascript application/x-font-ttf application/xml application/xml+rss image/png;

include /etc/nginx/conf.d/tpl/ssl имеет

ssl_certificate     /etc/letsencrypt/live/$host/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/$host/privkey.pem;
ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers         HIGH:!aNULL:!MD5;

И /etc/nginx/conf.d/tpl/host включает

proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;

Проблема в том, что когда я пытаюсь получить доступ, скажем https://my.server.com/admin/, он вернет 404 за попытку загрузки ресурсов, например https://my.server.com/scripts.9d46f2002d98ff7777de.js вместо того, что, я полагаю, должно быть https://my.server.com/admin/scripts.9d46f2002d98ff7777de.js. Я пытался использовать rewrite и redirect, но безуспешно.

...