【发布时间】:2020-09-19 07:10:24
【问题描述】:
我正在使用 pm2 在我的 Digital Ocean 液滴上运行 websocket 服务器。另外,我正在使用websocket/ws websocket 库。
使用命令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 日志文件。这是我看到的错误。
[error] 31009#31009: *19 上游过早关闭连接,而 从上游读取响应头,客户端:X.X.XX.XXX,服务器: xxxxx.com,请求:“GET /socket HTTP/1.1”,上游: “http://127.0.0.1:3030/socket”,主机:“www.xxxxx.com”
静态资源可以正常渲染,但 websocket 服务器不行。 这告诉我至少 wss://www.xxxx.com 能够在 /socket 处联系我的 Nginx 服务器,但似乎响应不正确。当我查看我的 pm2 日志和错误文件时,我发现它什么也没输出。当我用 localhost 测试它时,它运行良好。但是,当部署到服务器时,它会中断。
【问题讨论】:
标签: node.js nginx websocket server