Server Blocks in nginx - 502 Error

女生的网名这么多〃 提交于 2019-12-11 14:48:50

问题


I have 2 subdomains I want to catch and forward from one server running nginx: foo.acme.com, bar.acme.com

In my nginx.conf file I have set up 2 server blocks:

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;
    }
}

My 2 subdomains point to the same IP (the one with nginx running on it). I'm getting 502 Bad Gateway errors on both servers in this configuration.


回答1:


The 502 code means 502 Bad Gateway, The server was acting as a gateway or proxy and received an invalid response from the upstream server.

It usually means the backend servers are not reachable, which could be a problem with them, not with your front-end configuration.

On the machine running Nginx, you should test that you can rest the backend servers. Using w3m or another HTTP client on that machine, check these URLs. Do they load what you expect?

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

If not, you may have some updates to make sure that your Nginx server can reach the backend servers.

I should add, you may need send the Host: header to get the backend servers to serve the expected content, if they each host multiple virtual domains. I like to use GET and HEAD tools from the libwww-perl distribution:

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

It's important to run the test from the machine hosting Nginx, as running it from your desktop could produce a different result.



来源:https://stackoverflow.com/questions/18232816/server-blocks-in-nginx-502-error

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!