我已经研究过这个问题,但在大多数情况下,502错误的原因是配置不正确的Nginx.conf或上游服务.我相信这是不同的..
正如标题所示,我将ubuntu服务器14.04升级到16.04.我使用Nginx作为我的Web服务器,并且还运行java / tomcat服务器,在我的Nginx配置中设置为proxy_pass.
自升级以来,每次服务器启动时,Nginx在尝试连接到proxy_pass站点时都会显示错误502:Bad Gateway.我的配置中指定的所有其他站点按预期工作.
要解决这个问题,我必须sudo systemctl restart Nginx,之后,proxy_pass服务按预期工作,直到下次重启.
来自error.log:
2018/01/24 11:33:20 [error] 1886#1886: *202 connect() Failed (111: Connection refused) while connecting to upstream,client: 10.0.0.1,server: localhost,request: "GET /radio/rest2/savePlayQueue.view?u=user&p=enc:xxxxxxxx&v=2.0.0&c=DSub&id=0000¤t=0000&position=0 HTTP/1.1",upstream: "http://[::1]:4040/radio/rest2/savePlayQueue.view?u=user&p=enc:xxxxxxxx&v=2.0.0&c=DSub&id=0000¤t=0000&position=0",host: "www.myhostname.tld"
在Nginx生成此错误时,我能够使用该服务器中的lynx连接到localhost:4040 / radio,并提供相应的内容.即使在此之后,通过Nginx连接时仍然存在502错误.
没有为此定义的上游块,但是位置块是:
location ^~ /radio/ { proxy_pass http://localhost:4040; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Connection ""; # health_check; # Nginx: [emerg] unknown directive "health_check" }