我想从一台运行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错误。
答案 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
发布中的HEAD
和libwww-perl
工具:
GET -H 'Host: bar.acme.com' http://http://<my_ip_server_1>:80
从托管Nginx的计算机运行测试非常重要,因为从桌面运行它可能会产生不同的结果。