Python 3.x Nginx proxy_传递给docker容器不';行不通
我有两个相同的docker容器在CentOS7服务器的不同端口上运行。旧版本在端口81上运行,新版本在端口8080上运行(同时检查了82,83) 当我尝试代理第二个容器并将端口从81更改为8080时,我收到nginx错误消息(HTTP/1.1 502坏网关) Nginx不在容器中。我只是在服务器上安装了它 以下是我的代理通行证设置:Python 3.x Nginx proxy_传递给docker容器不';行不通,python-3.x,docker,nginx,centos,fastapi,Python 3.x,Docker,Nginx,Centos,Fastapi,我有两个相同的docker容器在CentOS7服务器的不同端口上运行。旧版本在端口81上运行,新版本在端口8080上运行(同时检查了82,83) 当我尝试代理第二个容器并将端口从81更改为8080时,我收到nginx错误消息(HTTP/1.1 502坏网关) Nginx不在容器中。我只是在服务器上安装了它 以下是我的代理通行证设置: location / { proxy_pass http://0.0.0.0:8080/; } 以及一些附加信息: nginx
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"}
nginx版本:nginx/1.16.1
Docker版本19.03.4,内部版本9013bf583a
完整的服务器配置是相当标准的,我没有改变任何东西,除了proxy\u 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
这与SElinux有关:
setsebool -P httpd_can_network_connect true
根据:
第二个[httpd_can_network_connect]允许httpd模块和脚本与与httpd服务相关的端口建立传出连接。要查看这些端口的列表,请运行semanageport-l | grep-whttp|u port\t
既然
0.0.0.0
表示它自己,那么这个容器应该如何与另一个容器通信?您应该将流量传递到另一个容器(使用其ip/容器名称)。@emix容器彼此不交互,它们只是在不同的端口上运行。Ginx不在容器中。两个容器应该是不同版本的服务,但出于测试原因,我启动了第二个相同的容器,nginx无法在不同的端口上代理新的容器。请看,这些容器运行在同一网络中吗?不如setsebool-P httpd\u can\u network\u connect true
它很可能与selinux相关。你检查日志了吗?@emix错误是[crit]9478#0:*5 connect()到0.0.0.0:8080在连接到上游时失败(13:权限被拒绝)
,并且setsebool-P httpd_can_network_connect true
帮助了我!多谢各位!现在我很好奇为什么第一个容器很好。你能不能把它作为一个答案,这样我就可以接受了?
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
setsebool -P httpd_can_network_connect true