0

我有 2 个子域,我想从一台运行 nginx 的服务器捕获和转发: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 的那个)。在此配置中,我在两台服务器上都收到 502 Bad Gateway 错误。

4

1 回答 1

2

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

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

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

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

如果没有,您可能需要进行一些更新以确保您的 Nginx 服务器可以访问后端服务器。

我应该补充一点,如果Host:后端服务器每个都托管多个虚拟域,您可能需要发送标头以使后端服务器提供预期的内容。我喜欢使用GETHEAD来自libwww-perl发行版的工具:

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

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

于 2013-08-14T13:59:41.960 回答