NodeJS Nginx -WebSocket握手期间出错:意外响应代码:502

wgeznvg7  于 2022-11-22  发布在  Node.js
关注(0)|答案(2)|浏览(689)

我正在使用pm2在我的数字海洋水滴上运行一个WebSocket服务器。另外,我正在使用websocket/ws websocket库。

它正在侦听端口3030。

使用命令netstat -l -p,我可以看到它确实在侦听。
下面是我的nginx站点启用配置文件的设置。我在/ url中运行静态文件,并运行/socket url。出于安全原因,/path/to/blah被修改。

31 server {
 30   . . . listen 80;
 29   . . . listen [::]:80;
 28 
 27   . . . server_name xxxx.com www.xxxx.com;
 26   . . . return 302 https://$server_name$request_uri;
 25 }
 24 
 23 server {
 22   . . . # SSL configuration
 21 
 20   . . . listen 443 ssl http2 default_server;
 19   . . . listen [::]:443 ssl http2 default_server;
 18   . . . server_name xxxx.com www.xxxx.com;
 17 
 16   . . . ssl_certificate /path/to/cert;
 15   . . . ssl_certificate_key /path/to/key;
 14 
 13   . . . location / {
 12   . . . . . .proxy_pass http://127.0.0.1:5000;
 11   . . . }
 10 
  9   . . . location /socket {
  8   . . . . . . proxy_set_header   X-Forwarded-For $remote_addr;
  7   . . . . . . proxy_set_header   Host $http_host;
  6   . . . . . . proxy_pass http://127.0.0.1:3030;
  5   . . . . . . proxy_http_version 1.1;
  4   . . . . . . proxy_set_header Upgrade $http_upgrade;
  3   . . . . . . proxy_set_header Connection 'upgrade';
  2   . . . . }
  1 }

当使用wss://www.xxxx.com/socket连接到WebSocket时,我得到这个错误:
WebSocket握手期间出错:意外响应代码:502
查看位于/var/log/nginx的Nginx日志文件。这是我看到的错误。
[错误代码] 31009#31009:*19从上游阅读响应头时上游过早关闭连接,客户端:X. X. XX.XXX,服务器:xxxxx.com,请求:“GET /套接字HTTP/1.1”,上游:“http://127.0.0.1:3030/socket“,主机:“www.xxxxx.com“
当检查这个WebSocket的头时。这是我得到的。

静态资产可以很好地呈现,但WebSocket服务器不行。这告诉我至少wss:www.xxxx.com可以在/socket连接我的Nginx服务器,但似乎响应不正确。当我查看我的pm2日志和错误文件时,我发现它没有输出任何内容。当我用localhost测试它时,它工作正常。但是,当部署到服务器时,它坏了。

kxeu7u2r

kxeu7u2r1#

我已经找到了解决问题的办法。
我发现,如果出现这样的问题,通常是与上游相关的问题,在我的情况下,是在端口3030上运行的应用程序。
如果其他人也遇到了这个问题。我建议采取一个非常简单的WebSocket,你知道肯定的工作,看看它是否在Nginx上工作。

fykwrbwg

fykwrbwg2#

当我忘记启动我的服务器时,我得到了这个错误。所以请确保服务器正在运行:)

相关问题