У меня есть угловое приложение my-app
, которое я создаю локально с ng build --prod
и работаю с докеризованным Nginx, Dockerfile
это:
FROM nginx:alpine
COPY /dist/my-app /usr/share/nginx/html
EXPOSE 80
Пока я запускаю контейнер на основе сборки образа с этим Dockerfile
, он работает. Хотя мне нужно поставить еще один Nginx, действующий как обратный прокси, перед этим, я хочу перенаправить трафик с маршрутом типа /my-app
на внутренний Nginx, обслуживающий Angular, например:
http://DOMAIN/my-app ---> Reverse Proxy ---> Nginx+Angular
Я буду использовать Docker Compose для локального разработчика. Моя docker-compose.yml
очень проста:
version: '3'
services:
nginx:
container_name: my-nginx
build: ./nginx
ports:
- "80:80"
my-app:
container_name: my-app
build: ./my-app
Для приложения Angular я переопределяю "baseHref": "./my-app/"
в моем angular.json
файле, строю заново и настраиваю обратный прокси следующим образом:
events {}
http {
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www;
index index.html;
location / {
index index.html;
}
location /my-app {
rewrite /my-app/(.*) /$1 break;
proxy_pass http://my-app:80;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header Host $host;
}
}
}
Здесь index.html
в директиве location /
является настраиваемым, а не приложением Angular. Таким образом, я ожидаю, что мой обратный прокси-сервер будет обслуживать index.html
при посещении маршрута /
, что он и делает, но я получаю ошибку 400 неверный запрос при попытке посетить /my-app/
. Есть ли у кого-нибудь решение для этого? Что я ошибаюсь? Спасибо!
curl -IL http://localhost:8081
, я получу:$ curl -IL http://localhost:8081 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 808 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0HTTP/1.1 200 OK ...
11.09.2020/var/log/nginx/error.log
может быть интересным. 11.09.2020