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。