前言
HTTP是個非常復雜的協議棧。做為網絡層的標准,它有很多狀態碼。不同的狀態碼會有不同的意思,而要想理解每個狀態碼的意思,我估計你頭得禿幾回。所以我們只能是遇到一個,解決一個了。
簡介
HTTP的狀態碼分成5類,分別是:
- 1xx: 信息響應
- 2xx: 響應成功
- 3xx: 重定向
- 4xx: 客戶端問題
- 5xx: 服務端問題
所有的HTTP狀態碼,可以憑借此標准簡單判定是哪邊出了問題。
正文
今天我遇到的是499,乍一看這是個客戶端問題或代理服務器問題。
后來簡單查了一下,499的意思是:
客戶端發起請求后,一段時間內沒有收到代理服務器的應答,導致連接失敗
有兩種可能:
1. 代理服務器認為客戶端發起的請求過於危險,所以主動給斷了
2. 代理服務器實在么得辦法連接到其他服務,導致timeout
所以我就根據此兩個判斷來檢查。
首先針對可能性1,我在nginx配置中添加了此參數:
proxy_ignore_client_abort on; #代理服務器不主動關閉連接
最后證明,可以使用,只是會降低安全性。
然后針對可能性2,我檢查了代理服務器和真正服務器的端口連接,發現某些端口並沒辦法連通。
於是,放通安全組后,就可以連接了。
疑問
這里我有個小問題,同個安全組里的機器,居然還要設置安全組規則才能互相訪問。我猜可能是這些機器不在同個網段吧。。。
😓