Nginx 技巧:使用 real_ip 模塊處理 X-Forwarded-For 頭
Nginx 是一款高效能的網頁伺服器,廣泛應用於各種網站和應用程式中。隨著雲端技術的發展,越來越多的網站使用反向代理伺服器來處理流量。在這種情況下,客戶端的真實 IP 地址可能會被隱藏,因為請求是通過代理伺服器轉發的。為了解決這個問題,Nginx 提供了 real_ip 模塊,能夠正確處理 X-Forwarded-For 頭,從而獲取客戶端的真實 IP 地址。
什麼是 X-Forwarded-For 頭?
X-Forwarded-For 是一個 HTTP 頭部,用於記錄客戶端的 IP 地址。當請求經過一個或多個代理伺服器時,這個頭部會被添加到請求中,並包含原始客戶端的 IP 地址。例如:
X-Forwarded-For: client1, proxy1, proxy2
在這個例子中,client1 是最初的客戶端 IP,而 proxy1 和 proxy2 是中間的代理伺服器。這樣的設計使得伺服器能夠追蹤請求的來源。
如何配置 Nginx 使用 real_ip 模塊
要使用 real_ip 模塊,首先需要確保 Nginx 已經編譯了該模塊。大多數現代的 Nginx 發行版都已經包含了這個模塊。接下來,您可以按照以下步驟進行配置:
步驟 1: 編輯 Nginx 配置文件
打開 Nginx 的配置文件,通常位於 /etc/nginx/nginx.conf 或者 /etc/nginx/conf.d/default.conf。
步驟 2: 添加 real_ip 模塊配置
在 http 區塊中,添加以下配置:
http {
set_real_ip_from 192.168.1.0/24; # 允許的代理伺服器 IP
real_ip_header X-Forwarded-For; # 使用 X-Forwarded-For 頭
}
在這裡,set_real_ip_from 指定了哪些 IP 地址可以被信任,這些地址通常是您的代理伺服器的 IP。您可以根據需要調整這個範圍。
步驟 3: 重新加載 Nginx 配置
完成配置後,使用以下命令重新加載 Nginx:
sudo nginx -s reload
測試配置
為了確保配置正確,您可以使用以下命令來檢查 Nginx 是否能夠正確識別客戶端的真實 IP:
curl -H "X-Forwarded-For: 203.0.113.195" http://your-nginx-server
如果配置正確,您應該能夠在 Nginx 的日誌中看到 203.0.113.195 作為客戶端的 IP 地址。
注意事項
- 確保只信任來自您控制的代理伺服器的 IP 地址,以防止 IP 欺騙。
- 如果使用多層代理,您可能需要考慮使用
X-Real-IP頭來獲取最終客戶端的 IP。 - 定期檢查和更新信任的代理伺服器列表,以確保安全性。
總結
使用 Nginx 的 real_ip 模塊來處理 X-Forwarded-For 頭是一個有效的方式,可以幫助您獲取客戶端的真實 IP 地址。這對於日誌記錄、安全性和流量分析都至關重要。若您需要高效能的 香港 VPS 解決方案,Server.HK 提供多種選擇,滿足不同需求。