我正在运营该网站https://telerandom.com(NodeJS 服务器,端口 9576)位于 Nginx 反向代理后面。它通常可以工作,但有时,它会开始拒绝来自某些用户的所有 SSL 连接(而对于其他所有用户来说,它工作得非常正常)。
拒绝 SSL 连接的这段时间通常持续约 45 分钟,然后一切恢复正常。我注意到同一网络上的设备(例如,我的笔记本电脑和手机在同一 WiFi 网络上)同时遇到这些中断。但是,如果我断开手机与 WiFi 的连接并使用蜂窝数据,它可以正常连接到网站。
服务器上的端口 80 和 443 均已打开。当连接被拒绝时,我在错误日志中收到以下消息:
2015/07/24 20:36:19 [debug] 1695#0: *92 post event 0000000002327BB0
2015/07/24 20:36:19 [debug] 1695#0: *92 post event 000000000233B3C0
2015/07/24 20:36:19 [debug] 1695#0: *92 delete posted event 000000000233B3C0
2015/07/24 20:36:19 [debug] 1695#0: *92 http run request: "/socket.io/?EIO=3&transport=websocket&sid=_32mgWR6o50vOl7pAAAC"
2015/07/24 20:36:19 [debug] 1695#0: *92 http upstream process upgraded, fu:1
2015/07/24 20:36:19 [debug] 1695#0: *92 event timer del: 20: 1437784644303
2015/07/24 20:36:19 [debug] 1695#0: *92 event timer add: 20: 90000:1437784669313
2015/07/24 20:36:19 [debug] 1695#0: *92 delete posted event 0000000002327BB0
2015/07/24 20:36:19 [debug] 1695#0: *92 http run request: "/socket.io/?EIO=3&transport=websocket&sid=_32mgWR6o50vOl7pAAAC"
2015/07/24 20:36:19 [debug] 1695#0: *92 http upstream process upgraded, fu:0
2015/07/24 20:36:19 [debug] 1695#0: *92 SSL_read: 7
2015/07/24 20:36:19 [debug] 1695#0: *92 SSL_read: -1
2015/07/24 20:36:19 [debug] 1695#0: *92 SSL_get_error: 2
2015/07/24 20:36:19 [debug] 1695#0: *92 send: fd:20 7 of 7
2015/07/24 20:36:19 [debug] 1695#0: *92 event timer: 20, old: 1437784669313, new: 1437784669313
2015/07/24 20:36:19 [debug] 1695#0: *92 post event 0000000002327AE0
2015/07/24 20:36:19 [debug] 1695#0: *92 post event 000000000233B2F0
2015/07/24 20:36:19 [debug] 1695#0: *92 delete posted event 000000000233B2F0
2015/07/24 20:36:19 [debug] 1695#0: *92 http upstream request: "/socket.io/?EIO=3&transport=websocket&sid=_32mgWR6o50vOl7pAAAC"
2015/07/24 20:36:19 [debug] 1695#0: *92 http upstream process upgraded, fu:0
2015/07/24 20:36:19 [debug] 1695#0: *92 event timer del: 20: 1437784669313
2015/07/24 20:36:19 [debug] 1695#0: *92 delete posted event 0000000002327AE0
2015/07/24 20:36:19 [debug] 1695#0: *92 http upstream request: "/socket.io/?EIO=3&transport=websocket&sid=_32mgWR6o50vOl7pAAAC"
2015/07/24 20:36:19 [debug] 1695#0: *92 http upstream process upgraded, fu:1
2015/07/24 20:36:19 [debug] 1695#0: *92 recv: fd:20 3 of 4096
2015/07/24 20:36:19 [debug] 1695#0: *92 SSL to write: 3
2015/07/24 20:36:19 [debug] 1695#0: *92 SSL_write: 3
2015/07/24 20:36:19 [debug] 1695#0: *92 recv: fd:20 -1 of 4096
2015/07/24 20:36:19 [debug] 1695#0: *92 recv() not ready (11: Resource temporarily unavailable)
2015/07/24 20:36:19 [debug] 1695#0: *92 event timer add: 20: 90000:1437784669313
这是我的配置文件
server {
listen 80;
server_name telerandom.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name telerandom.com;
ssl_certificate /etc/nginx/ssl/telerandom/cert.crt;
ssl_certificate_key /etc/nginx/ssl/telerandom/cert.key;
ssl on;
access_log /var/log/nginx/telerandom.com.access.log;
error_log /var/log/nginx/telerandom.com.error.log debug;
location / {
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Fix the "It appears that your reverse proxy set up is broken" error.
proxy_pass http://127.0.0.1:9576;
proxy_read_timeout 90;
proxy_redirect http://127.0.0.1:9576 https://telerandom.com;
}
}
重新启动 Nginx 和服务器无法解决问题,重新启动客户端设备也无法解决问题。此外,这种情况在多个网络上都发生过(有一次它开始发生在我的手机蜂窝数据上),并且发生在我以外的人身上。此外,在问题发生时,我还可以连接到 nginx 后面配置类似的 SSL 站点
答案1
服务器日志中没有任何特殊内容表明 nginx 站点存在问题。但是,您的描述清楚地表明客户端网络存在问题,即
- 只有同一网络中的客户端会受到影响
- 同一网络中的所有客户端均受影响
- 如果客户端在遇到问题时连接到另一个网络,则问题不再发生
这可能只是您客户端网络的可靠性问题。由于您谈论的是 Wifi,因此可能是某些损坏的电子设备(微波炉、吸尘器等)的干扰,不仅会影响到此单个服务器的 SSL 连接,还会影响其他连接,即至少使它们变慢或不可靠。当然,也可能是网络中的攻击者,Wifi 因某人传输大量数据(备份作业?)而饱和等。但我确信这与您的 nginx 设置无关。