服务器设置和教程 · 8 10 月, 2024

Nginx 技巧:使用 real_ip 模塊處理 X-Forwarded-For 頭

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,而 proxy1proxy2 是中間的代理伺服器。這樣的設計使得伺服器能夠追蹤請求的來源。

如何配置 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 提供多種選擇,滿足不同需求。