В настоящее время я пытаюсь создать обратный прокси-сервер для двух приложений Angular.Я хочу, чтобы оба приложения были доступны через порт 443 хоста докера с включенным SSL (например, https://192.168.x.x/app1 и https://192.168.x.x/app2),, чтобы пользователям не приходилось вводить номера портов для каждогоapp.
Моя настройка заключается в том, что каждая часть приложения запускается в своем собственном контейнере 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.x.x/app1', приложение достигнуто, но я получаю сообщения об ошибках для всех статических файлов' Uncaught SyntaxError: неожиданный токен <': <a href="https://i.stack.imgur.com/b3ay4.jpg" rel="nofollow noreferrer"> сообщения об ошибках из chrome
Itкажется, что вместо статиc js и css файлы, index.html приложения возвращается.Я считаю, что это проблема конфигурации nginx самих приложений.
Я потратил немало времени, пытаясь понять, как решить эту проблему, но пока не повезло.Я надеюсь, что кто-то здесь может помочь мне с этим.