当 nginx 给出 502 bad gateway 时如何调试?
Howto debug when nginx gives 502 bad gateway?
在 landing.example.com:10000
上,我有一个工作正常的网络服务器,它是一个公开端口 10000
的 Docker 容器。它的IP是172.17.0.2
.
我想要的是在端口 80
上有一个 nginx 反向代理,并根据他们访问的 URL 将访问者发送到不同的 Docker 容器。
server {
listen 80;
server_name landing.example.com;
location / {
proxy_pass http://172.17.0.2:10000/;
}
access_log /landing-access.log;
error_log /landing-error.log info;
}
当我这样做时,我得到 502 Bad Gateway
并且日志显示
2016/04/14 16:58:16 [error] 413#413: *84 connect()
failed (111: Connection refused) while connecting to upstream, client:
xxx.xxx.xxx.xxx, server: landing.example.com, request: "GET / HTTP/1.1",
upstream: "http://172.17.0.2:10000/", host: "landing.example.com"
试试这个:
upstream my_server {
server 172.17.0.2:10000;
}
server {
listen 80;
server_name landing.example.com;
location / {
proxy_pass http://my_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
proxy_redirect http:// $scheme://;
}
}
在这里定义上游服务器(您的服务器通过 IP 或主机名)
并确保也转发 headers 以便服务器回答知道要回答谁。
在 landing.example.com:10000
上,我有一个工作正常的网络服务器,它是一个公开端口 10000
的 Docker 容器。它的IP是172.17.0.2
.
我想要的是在端口 80
上有一个 nginx 反向代理,并根据他们访问的 URL 将访问者发送到不同的 Docker 容器。
server {
listen 80;
server_name landing.example.com;
location / {
proxy_pass http://172.17.0.2:10000/;
}
access_log /landing-access.log;
error_log /landing-error.log info;
}
当我这样做时,我得到 502 Bad Gateway
并且日志显示
2016/04/14 16:58:16 [error] 413#413: *84 connect()
failed (111: Connection refused) while connecting to upstream, client:
xxx.xxx.xxx.xxx, server: landing.example.com, request: "GET / HTTP/1.1",
upstream: "http://172.17.0.2:10000/", host: "landing.example.com"
试试这个:
upstream my_server {
server 172.17.0.2:10000;
}
server {
listen 80;
server_name landing.example.com;
location / {
proxy_pass http://my_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
proxy_redirect http:// $scheme://;
}
}
在这里定义上游服务器(您的服务器通过 IP 或主机名) 并确保也转发 headers 以便服务器回答知道要回答谁。