簡體   English   中英

Apache:如何使用負載均衡器和2台服務器編寫X-Forwarded-For?

[英]Apache: How to write X-Forwarded-For with load balancer and 2 servers?

我有一個負載平衡器和兩個服務器。 我想在我的apache中添加X-Forwarded-For,這樣我就可以看到請求的IP,而不是看到每個請求的負載均衡器IP。 我該怎么做? X-Forwarded-For: client, proxy1, proxy2了一下, X-Forwarded-For: client, proxy1, proxy2看起來像一個解決方案。 客戶端將是負載均衡器IP,proxy1是服務器1的IP,proxy2是服務器2的IP嗎?

我假設您已經引用了http://en.wikipedia.org/wiki/X-Forwarded-For-這很可能是您從中復制X-Forwarded-For: client, proxy1, proxy2格式。

我還假設您正在使用專用的負載均衡器(Apache HTTPD之外的其他工具),它將流量定向到“服務器”-每個服務器上都包含“ Apache”,並且您知道如何配置負載均衡器以使其通過此標頭。

我認為您需要了解的缺失部分是這樣的(也來自Wikipedia頁面):

其中的值是逗號分隔的IP地址列表,最左邊的是原始客戶端,每個通過請求的后續代理都將接收請求的IP地址添加到該IP地址中。 在此示例中,請求先通過proxy1,proxy2,再通過proxy3(標頭中未顯示)傳遞。 proxy3顯示為請求的遠程地址。

IE,如果您的負載均衡器是給定請求通過的唯一代理(至少是添加X-Forwarded-For標頭的唯一代理),則標頭將僅包含一個值-您的負載均衡器的值。

假設您正在處理來自203.0.113.1的客戶端的請求,並且該請求來自IP為192.0.2.1的負載均衡器。 然后,在兩台服務器之一上運行的Apache HTTP實例應該看到來自192.0.2.1的請求,並帶有: X-Forwarded-For: 203.0.113.1

為了在Apache HTTPD日志中看到此標頭,您需要使用以下代碼:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D \"%{Host}i\" \"%{X-Forwarded-For}i\"" custom

負載平衡器的IP(192.0.2.1)仍將在日志條目中顯示為第一個字段( %h ),但最后一個字段( \\"%{X-Forwarded-For}i\\" )將包含客戶端的IP( s)-在這種情況下為203.0.113.1 如果客戶端位於同時報告X-Forwarded-For其他代理之后,則將是一個逗號分隔的列表-最左邊的地址是離服務器“最近”的地址IE,即負載均衡器收到的要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM