Nginx:docker堆栈中的502错误网关

我有Docker堆栈运行2个容器,第一个是Nginx,第二个应用程序。

问题是nginx显示错误的网关错误:

这里是nginx conf:

upstream example { server mystack_app1; # Also tried with just 'app1' # server mystack_app2; keepalive 32; } server { listen 80; server_name example; location / { proxy_pass http://example; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 150; proxy_send_timeout 100; proxy_read_timeout 100; proxy_buffers 4 32k; client_max_body_size 8m; client_body_buffer_size 128k; } } 

这里是docker-compose.yml

 version: "3" services: app1: image: my-app:latest ports: - "9000:9000" networks: - webnet web: image: my-web:latest ports: - "81:80" networks: - webnet deploy: restart_policy: condition: on-failure networks: webnet: 

我使用以下命令部署docker stack:

 docker stack deploy -c docker-compose.yml mystack 

所以我可以通过localhost:9000访问主机浏览器的应用程序 – 它工作正常。

另外,从nginx容器中,我可以ping mystack_app1。

但是当访问localhost:81时,nginx显示了502 Bad Gateway

请帮忙。

看起来你的上游定义是不正确的。 它试图连接到端口80而不是端口9000。

尝试

 upstream example { server mystack_app1:9000; # Also tried with just 'app1' # server mystack_app2; keepalive 32; } 

顺便说一句,我build议你在docker-compose文件中使用container_name。