Nginx 随机拒绝 SSL 连接

Nginx 随机拒绝 SSL 连接

我正在运营该网站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 设置无关。

相关内容