Некоторое время go Я пытался настроить обратный прокси в NGINX, который может взаимодействовать с несколькими docker контейнерами, расположенными на сервере с разными портами. К сожалению, у меня было много проблем с nginx.conf
, так как он неправильно перенаправляет изображения.
Далее я оставляю конфигурацию nginx:
events {
worker_connections 1024; ## Default: 1024
}
http {
upstream front {
server web:4000;
}
upstream identity {
server identity:4100;
}
upstream reaction {
server api:3000;
}
upstream admin {
server reaction-admin:4080;
}
upstream hydra {
server hydra:4444;
}
server {
listen 80;
listen [::]:80;
server_name my-domain.cl;
location / {
proxy_pass http://front/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /front/ {
proxy_pass http://front/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header Host $host;
}
}
}
Каждый из заявленных апстримов содержит изображение, которое работает безупречно индивидуально, все эти контейнеры работают под общим сеть (в том числе от nginx).
Контейнер Dockefile
из nginx следующий:
FROM nginx:stable-alpine
RUN rm /etc/nginx/nginx.conf
COPY ./nginx/nginx.conf /etc/nginx/nginx.conf
EXPOSE 80/tcp
EXPOSE 443/tcp
CMD ["/bin/sh", "-c", "exec nginx -g 'daemon off;';"]
Это выполняется с sudo docker run -d -p 80:80 -p 443:443 --network=sharednetwork --name reaction_nginx_1 reaction_nginx
.
Основная проблема заключается в том, что для работы контейнера необходимо добавить два местоположения в nginx .conf (как вы можете видеть в конфигурации), которые указывают на один и тот же контейнер, поскольку если я добавляю только одну (местоположение / фронт) и удаляю местоположение / страницу, он автоматически делает соответствующие запросы из root (my-domain.cl) вместо (my-domain.cl/front), выбрасывая 404 в js, css файлы контейнера. Самое странное, что в текущей конфигурации оба пути работают и файлы найдены, однако это не решение.
Запросы с одним местоположением
Я думаю, что это проблема конфигурации nginx, я много искал, не получив решения :(.
Надеюсь, вы поможете мне, пожалуйста!