將請求移至我的內部 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位址。