我正在使用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测试它时,它工作正常。但是,当部署到服务器时,它坏了。
2条答案
按热度按时间kxeu7u2r1#
我已经找到了解决问题的办法。
我发现,如果出现这样的问题,通常是与上游相关的问题,在我的情况下,是在端口3030上运行的应用程序。
如果其他人也遇到了这个问题。我建议采取一个非常简单的WebSocket,你知道肯定的工作,看看它是否在Nginx上工作。
fykwrbwg2#
当我忘记启动我的服务器时,我得到了这个错误。所以请确保服务器正在运行:)