Http
訪問 HAProxy 中的代理協議地址
我正在執行從上游源接收第 4 層代理協議的 HAProxy。我需要創建一個自定義 HTTP 標頭,其中包含地址。我似乎找不到如何引用該 TCP 標頭。
以下是我正在嘗試做的範例:
frontend http_in bind *:1025 accept-proxy mode http default_backend http_out backend http_out mode http http-request set-header X-Custom-Header %[<ip from proxy protocol header>] server some-server some-server:80
如何確保使用 L4 標頭中的地址而不是一些可欺騙的 http 標頭填充新標頭?
根據 bind 選項的文件,
accept-proxy
以及更一般地使用 PROXY 協議,PROXY 協議標頭中包含的所有欄位(源 IP 和埠、目標 IP 和埠)都替換了真實連接中的欄位:…
PROXY 協議規定在
任何使用地址的地方都使用傳入連接的第 3/4 層地址,唯一的
例外是“tcp-request 連接”規則,它只會看到
真實的連接地址。日誌將反映協議中指示的地址
,除非違反協議,在這種情況下
仍將使用真實地址。
…
這意味著您的後端看起來像
backend http_out mode http http-request set-header X-Custom-Header %[src] server some-server some-server:80
這是有效的,因為
src
範例欄位將包含 PROXY 標頭中定義的源 IP,而不是實際的源 IP。