Nginx
Nginx 隨機拒絕 SSL 連接
我在Nginx 反向代理後面執行網站https://telerandom.com (NodeJS 伺服器,埠 9576)。它通常可以工作,但有時,它會開始拒絕來自某些使用者的所有 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 站點
伺服器日誌中沒有什麼特別之處,表明 nginx 站點存在問題。但是,您的描述清楚地表明客戶端網路中存在問題,即
- 只有同一網路中的客戶端受到影響
- 同一網路中的所有客戶端都受到影響
- 如果客戶端在遇到問題時連接到另一個網路,則問題不再發生
這可能只是客戶端網路可靠性的問題。由於您正在談論 Wifi,因此可能是某些損壞的電子設備(微波爐、真空吸塵器等)造成的干擾,並且不僅會影響到該單個伺服器的 SSL 連接,還會影響其他連接,即至少使它們變慢或不可靠。當然,它也可能是網路中的攻擊者,Wifi 因某人傳輸大量數據(備份工作?)等而飽和。但我確信它與您的 nginx 設置無關。