將 Envoy 設定為第二層代理
Envoy 是一個已可投入生產環境的代理程式,但是,當在多層部署中將 Envoy 用作「第二層」代理時,可能需要調整為邊緣使用案例量身定制的預設設定。
總而言之,如果您運行終止 HTTP/2 或更高版本的第二層 Envoy 1.11.1 或更高版本,我們強烈建議您變更第二層 Envoy 的 HttpConnectionManager 設定,將其下游的 HTTP 訊息驗證選項 設定為 true。
如果存在無效請求且未設定此選項,則相關的 Envoy 將重設整個連線。此行為已在 1.11.1 安全版本中變更,以提高邊緣 Envoy 的安全性。遺憾的是,由於不能保證邊緣代理會像 Envoy 的堆疊一樣嚴格執行 HTTP 標準合規性,這可能會導致以下問題。如果一個客戶端發送的請求通過了第一層代理的驗證檢查,並且通過上游多工連線(可能與其他客戶端共享)轉發,則第二層 Envoy 的嚴格執行將重設該連線上的所有串流,導致共享該 L1-L2 連線的客戶端發生服務中斷。如果惡意使用者可以深入瞭解哪些流量會繞過第一層檢查,則他們可能會在第一層群組中散布「不良」流量,對其他使用者的流量造成嚴重干擾。
此設定選項也對無效的 HTTP/1.1 有影響,儘管影響較小。對於 Envoy L1,無效的 HTTP/1 請求也會導致連線重設。如果將此選項設定為 true,並且完全讀取請求,則連線將持續存在,並且可以重複用於後續請求。