Nginx
使用 Real-IP 時如何記錄 $remote_addr 的原始值
我的環境有通過多個系統的使用者請求:
$$ Client $$–>$$ ELB $$—>$$ nginx $$–>$$ web $$ (ELB = AWS 彈性負載均衡器)
多虧了這個答案,我讓 nginx 確定了正確的客戶端 IP 地址並將其傳遞給帶有
X-Forwarded-For
和X-Real_IP
標頭的上游伺服器(Web)。相關的 nginx 配置:real_ip_header X-Forwarded-For; set_real_ip_from 10.0.0.0/8; real_ip_recursive on; proxy_set_header X-Real-IP $remote_addr;
我的問題是,nginx 中的 Real IP 模組將現有變數替換為其計算結果。這給了我原始客戶端 IP,但我失去了實際將請求發送到代理(即 ELB)的系統的 IP 地址。
$remote_addr``X-Forwarded-For
總的來說,擁有客戶端 IP 對我來說更重要,但我希望能夠記錄完整的請求鏈,以便了解(和調試)流量是如何流動的。目前,我只能讓 nginx 記錄客戶端 IP、自己的 IP 和上游伺服器 IP。我也希望能夠記錄 ELB IP。
您可以在變數
$realip_remote_addr
中獲取連接 ELB 的原始客戶端地址,但請注意,此變數僅在 nginx 1.9.7 中添加,因此您需要執行最新版本的 nginx。