將真實 IP 位址從一個 nginx 實例傳遞到另一個執行個體並將其寫入日誌中

將真實 IP 位址從一個 nginx 實例傳遞到另一個執行個體並將其寫入日誌中

將請求移至我的內部 nginx 伺服器,我將其新增至呼叫中:

proxy_set_header X-Real-IP $remote_addr;

當我嘗試在日誌中列印這個值時,內部 nginx 容器崩潰了:

log_format verbose ' Real: $X-Real-IP ';

我究竟做錯了什麼? (我也嘗試過在變數周圍使用“”,但沒有幫助。)

答案1

伺服器接收X-Real-IP作為 HTTP 請求中的標頭之一。 Nginx 讓每個請求標頭值都可用作變數。

http 請求標頭值的變數名稱以 開頭$http_。標頭名稱將轉換為小寫,並且每個連字符將替換為下劃線。

例如X-Real-IP可用作$http_x_real_ip

這個文件了解詳情。

答案2

可以用來ngx_http_realip_module讓 nginx 使用標頭中的 IP 位址作為 nginx 內部各處的來源 IP。

它的配置如下:

set_real_ip_from 192.168.1.1 # IP address of the external nginx
real_ip_header X-Real-IP;

透過使用這個模組,不需要定義自己的日誌格式,nginx在日誌檔案和所有其他地方輸出真實的客戶端IP作為來源IP位址。

相關內容