В настоящее время я пытаюсь создать обратный прокси-сервер для двух приложений Angular. Я хочу, чтобы оба приложения были доступны через порт 443 хоста докера с включенным протоколом SSL (например, https://192.168.xx/app1 и https://192.168.xx/app2), чтобы пользователи не имели ввести номера портов для каждого приложения.
Моя настройка заключается в том, что каждая часть приложения запускается в своем собственном контейнере Docker: - Контейнер 1: приложение Angular 1 (порт 80 открыт для хоста на порту 8080) - Контейнер 2: приложение Angular 2 (порт 80 открыт для хоста на порту порт 8081) - Контейнер 3: обратный прокси (открыт порт 443)
И приложения Angular, и обратный прокси-сервер работают на nginx. Приложения создаются следующим образом: ng build --prod --base-href/app1 / --deploy-url/app1/
Настройка nginx приложений выглядит следующим образом:
server {
listen 80;
sendfile on;
default_type application/octet-stream;
gzip on;
gzip_http_version 1.1;
gzip_disable "MSIE [1-6]\.";
gzip_min_length 256;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_comp_level 9;
root /usr/share/nginx/html;
index index.html index.htm;
location / {
try_files $uri $uri/ /index.html =404;
}
}
Конфигурация nginx обратного прокси выглядит так:
server {
listen 443;
ssl on;
ssl_certificate /etc/nginx/certs/domaincertificate.cer;
ssl_certificate_key /etc/nginx/certs/domain.key;
location /app1/ {
proxy_pass http://192.168.x.x:8080;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
}
location /app2/ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_pass http://192.168.x.x:8081;
}
}
Если я пытаюсь открыть приложение по URL-адресу " https://192.168.xx/app1 ", приложение работает, но я получаю сообщения об ошибках для всех статических файлов "Uncaught SyntaxError: неожиданный токен <": сообщения об ошибках из chrome
Кажется, что вместо статических файлов js и css возвращается index.html приложения. Я считаю, что это проблема конфигурации nginx самих приложений.
Я потратил довольно много времени, пытаясь понять, как решить эту проблему, но пока не повезло. Я надеюсь, что кто-то здесь может помочь мне с этим.