gpt4 book ai didi

python-3.x - Nginx proxy_pass 到 docker 容器不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 17:20:23 26 4
gpt4 key购买 nike

我有两个相同的 docker 容器在 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

最佳答案

这是 SElinux 相关的:

setsebool -P httpd_can_network_connect true

根据 this thread :

The second one [httpd_can_network_connect] allows httpd modules and scripts to make outgoing connections to ports which are associated with the httpd service. To see a list of those ports run semanage port -l | grep -w http_port_t

关于python-3.x - Nginx proxy_pass 到 docker 容器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58768537/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com