У меня два идентичных док-контейнера, работающих на разных портах на сервере CentOS7. Старая версия работает на порте 81, более новая - на порту 8080 (проверено также 82,83).
Когда я пытаюсь проксировать второй контейнер и изменить порт с 81 на 8080, я получаю сообщение об ошибке nginx (HTTP / 1.1 502 Bad Gateway).
Nginx не находится в контейнере. Я просто установил его на сервере.
Вот мой параметр proxy_pass:
location / {
proxy_pass http://0.0.0.0:8080/;
}
И некоторые дополнительные сведения:
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Если я пытаюсь получить доступ к контейнерам напрямую через их порты, все работает нормально.
curl 0.0.0.0:81
{"msg":"Phone Masks service"}
curl 0.0.0.0:8080
{"msg":"Phone Masks service"}
nginx версия:nginx / 1.16.1
Docker версия 19.03.4, сборка 9013bf583a
Полная конфигурация сервера довольно стандартная, я ничего не менял, кроме настройки proxy_pass
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://0.0.0.0:8080/;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
Команда, которую я использую для запуска контейнера:
sudo docker run --rm -it -p 8080:8080 -e PORT="8080" api
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
47ef127e3e49 api "/start.sh" 26 minutes ago Up 26 minutes 80/tcp, 0.0.0.0:8080->8080/tcp infallible_borg
5d5fe891ba30 api "/start.sh" 7 hours ago Up 7 hours 80/tcp, 0.0.0.0:81->81/tcp hopeful_cerf