nginx中的服务器块 - 502错误

时间:2013-08-14 13:17:16

标签: nginx subdomain

我想从一台运行nginx的服务器上捕获并转发2个子域:foo.acme.com,bar.acme.com

在我的nginx.conf文件中,我设置了2个服务器块:

server {
    listen       80;
    server_name foo.acme.com;
    location / {
        proxy_pass http://<my_ip_server_1>:80;
    }
}
server {
    listen       80;
    server_name bar.acme.com;
    location / {
        proxy_pass http://<my_ip_server_2>:80;
    }
}

我的2个子域指向相同的IP(运行nginx的IP)。 我在这个配置中的两台服务器上都收到了502 Bad Gateway错误。

1 个答案:

答案 0 :(得分:2)

502代码表示 502 Bad Gateway,服务器充当网关或代理,并从上游服务器收到无效响应。

这通常意味着后端服务器无法访问,这可能是它们的问题,而不是您的前端配置。

在运行Nginx的计算机上,您应该测试是否可以休息后端服务器。在该计算机上使用w3m或其他HTTP客户端,请检查这些URL。他们加载你期望的东西吗?

http://<my_ip_server_1>:80
http://<my_ip_server_2>:80

如果没有,您可能会有一些更新,以确保您的Nginx服务器可以到达后端服务器。

我应该补充一点,如果每个服务器都托管多个虚拟域,您可能需要发送Host:标头以使后端服务器提供预期内容。我想使用GET发布中的HEADlibwww-perl工具:

GET -H 'Host: bar.acme.com' http://http://<my_ip_server_1>:80

从托管Nginx的计算机运行测试非常重要,因为从桌面运行它可能会产生不同的结果。