http協議:四 (7)http的代理服務
負載均衡
健康檢查:使用“心跳”等機制監控後端伺服器,發現有故障就及時“踢出”叢集,保證服務高可用;
安全防護:保護被代理的後端伺服器,限制 IP 地址或流量,抵禦網路攻擊和過載;
加密解除安裝:對外網使用 SSL/TLS 加密通訊認證,而在安全的內網不加密,消除加解密成本;
資料過濾:攔截上下行的資料,任意指定策略修改請求或者響應;
內容快取:暫存、複用伺服器響應,這個與第 20 講密切相關,我們稍後再說。
HTTP 代理就是客戶端和伺服器通訊鏈路中的一箇中間環節,為兩端提供“代理服務”;
代理處於中間層,為 HTTP 處理增加了更多的靈活性,可以實現負載均衡、安全防護、資料過濾等功能;
代理伺服器需要使用欄位“Via”標記自己的身份,多個代理會形成一個列表;
如果想要知道客戶端的真實 IP 地址,可以使用欄位“X-Forwarded-For”和“X-Real-IP”;
專門的“代理協議”可以在不改動原始報文的情況下傳遞客戶端的真實 IP。
問題
1、你覺得代理有什麼缺點?實際應用時如何避免?
2、你知道多少反向代理中使用的負載均衡演算法?它們有什麼優缺點?
補充
01現實生活中也有很多“代理”,例如房產代理、留學代理、保險代理、訴訟代理,可以對比理解一下。
02知名的代理軟體有HAProxy、Squid、 Varnish等,而Nginx雖然是Web伺服器,但也可以作為代理伺服器,而且功能毫不遜色。
03“Via”是HTTP協議裡規定的標準頭欄位,但有的伺服器返回的響應報文裡會使用“X-Via”,含義是相同的。
04因為HTTP是明文傳輸,請求頭很容易被竄改,所以“X-Forwarded- For”也不是完全可信的。
05 RFC7239 定義了欄位“Forwarded",它可以代替“X-Forwarded- -For”“X- -Forwarded-Host”等欄位,但應用得不多。