簡體   English   中英

負載均衡器和HTTP_X_FORWARDED_FOR之間有什么關系?

[英]What's the relation between load balancer and HTTP_X_FORWARDED_FOR?

這是我對用戶IP的理解:

用戶的IP是REMOTE_ADDR 但是,如果用戶使用的是代理服務器(例如HotSpotSheild(HSS))或代理鏈,則REMOTE_ADDR是代理服務器的地址(不是用戶的IP) ,並且用戶的IP可能在其他標頭中,如下所示:

  • HTTP_CLIENT_IP
  • HTTP_X_FORWARDED_FOR
  • HTTP_X_FORWARDED
  • HTTP_X_CLUSTER_CLIENT_IP
  • HTTP_FORWARDED_FOR
  • HTTP_FORWARDED
  • 也許都不是。

因此,當用戶使用代理時,便無法檢測到他。

問題1:這些標頭之一(上面)始終是滿的嗎? 剩下的是空的嗎?

Question2:REMOTE_ADDR和其中一個標頭(不為空)存儲在數據庫的不同字段中是一個好主意嗎? (我的意思是,IP有兩列,而不僅僅是一列)


這是我對負載均衡器的理解:

它是運行服務器集群時使用的反向代理服務器。 客戶端連接到負載平衡器,然后它將連接轉發到實際服務器之一。


理論:

如果使用負載均衡器,請使用HTTP_X_FORWARDED_FOR作為用戶的IP。

Question3如果有負載平衡器,為什么我應該將bHTTP_X_FORWARDED_FOR存儲為用戶的IP? 我的意思是說bHTTP_X_FORWARDED_FOR與負載均衡器有什么關系?

這全部與信任的概念和特定的實現細節有關。

如果您的系統信任代理服務器(例如在反向代理情況下),那么您可以信任那些HTTP標頭之一中傳遞給您的IP。

如果沒有理由信任代理服務器(例如,諸如Hotspot Shield之類的隨機Internet代理),則您的系統不知道傳遞給您的IP是否是簡單的。

您可能有一個基於REMOTE_ADDR信任的服務器白名單,並且如果您從其中一個服務器獲得連接,則可以使用HTTP標頭中的IP代替(盡管出於完整性考慮,最好同時記錄兩者)。 您可能還希望擴展它,以便某些遠程代理信任某些標頭,否則可能存在安全漏洞,即用戶提供自己的標頭並設法毫發無損地通過代理。

這些標頭之一(上面)總是滿的嗎? 剩下的是空的嗎?

取決於代理及其軟件實現。

將REMOTE_ADDR和其中一個標頭(不為空)存儲在數據庫的不同字段中是一個好主意嗎? (我的意思是,IP有兩列,而不僅僅是一列)

是的,兩者都存儲沒有害處-它們對於任何審計跟蹤都可能有用。

有負載均衡器時,為什么應將bHTTP_X_FORWARDED_FOR存儲為用戶的IP? 我的意思是說bHTTP_X_FORWARDED_FOR與負載均衡器有什么關系?

由於您的負載均衡器應該是受信任的代理,因此您應該能夠信任它提供給您的IP。

暫無
暫無

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

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