如何修复此NGINX 502坏网关错误



我正在一个angular应用程序中开发web套接字。我让它通过nginx连接到python后端。我发现大约90%的时间我都会收到502个"坏网关"错误。我会这样做:

  1. 在浏览器中加载页面并连接web套接字
  2. Python后端向angular前端发送数据
  3. 断开web套接字
  4. 尝试重新连接web套接字<--502坏网关错误
  5. Chrome中的硬重新加载
  6. 在浏览器中加载页面并连接web套接字<--No 502错误

我不明白为什么会发生这种事。我不知道为什么会出现502错误。我也不明白为什么进行硬重新加载可以解决这个问题。我尝试过的东西:

  • 增加nginx日志级别进行调试。日志中仍然没有任何有用的信息
  • 我不保持任何web套接字对象处于状态。我这样做是为了防止有东西被缓存在某个地方
  • 我总是用关闭代码1000关闭web套接字
  • 我在服务器上手动运行python服务,这样我就可以观看它。当502错误发生时,该服务没有显示任何异常
  • 将nginx max_fails设置为0。将fail_timeout设置为0。这些变化似乎都没有任何效果。(我在SO的其他答案中找到了这个建议(

我应该寻找什么来帮助我解决这个问题?

编辑:这是我的nginx conf.d文件:

server {
listen  80;
index index.html;
root /var/www/mysite;
location / {
access_log  /var/log/nginx/mysite/ui.access.log;
error_log /var/log/nginx/mysite/ui.error.log;
try_files $uri $uri/ /index.html;
}
location /ws/ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Host $proxy_host;
proxy_pass http://WEBSOCKET/;
access_log  /var/log/nginx/mysite/ws_services.access.log;
error_log /var/log/nginx/mysite/ws_services.error.log;
proxy_read_timeout 300s;
}
}
upstream WEBSOCKET {
ip_hash;
server 127.0.0.1:8765;
}

不是OP遇到的问题,但只是为了防止有人遇到这个问题,并且设置与我相同:

我使用的是SSL上的WebSockets(所以是wss://协议(,并弹出了502,尽管配置以前也工作过。配置如下:

...
proxy_pass http://127.0.0.1:8080;
...

在后端,我使用一个带有ws包的Node来创建一个websocket服务器

正如我所说:它以前工作,但突然停止了工作。此外,nginx还将upstream prematurely closed connection while reading response header from upstream错误写入错误日志。我认为nginx或node关闭了某种安全问题,导致设置不再工作。

为了使它发挥作用,我必须使用https而不是proxy_pass配置的http

...
proxy_pass https://127.0.0.1:8080;
...

相关内容

  • 没有找到相关文章

最新更新