我正在使用pm2在我的Digital Ocean droplet上运行WebSocket服务器。同时,我还在使用websocket/ws WebSocket库。
它正在3030端口上监听。 使用命令netstat -l -p
,我可以看到它确实在监听。以下是我的nginx sites-enabled配置文件设置。我在
/
网址中运行静态文件,并运行/socket
网址。并且,由于安全原因,/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日志文件,我看到了以下错误信息。
静态资源可以正常渲染,但是websocket服务器不能。 这告诉我至少wss://www.xxxx.com能够联系到我的Nginx服务器在/socket上,但似乎响应不正确。当我查看pm2日志和错误文件时,发现没有输出任何内容。在本地主机测试时,它可以正常工作。但是,在部署到服务器时,它就会出错。[error] 31009#31009: *19 upstream prematurely closed connection while reading response header from upstream, client: X.X.XX.XXX, server: xxxxx.com, request: "GET /socket HTTP/1.1", upstream: "http://127.0.0.1:3030/socket", host: "www.xxxxx.com"