2013-05-16 62 views
4

中找到用於https請求(即安全連接)的客戶端IP在做一個應用程序,我需要找到客戶端的IP地址。我使用request.remote_ip獲取客戶端的IP,併爲http請求獲取客戶端的公共IP地址。當它是一個https請求request.remote_ip獲取不同的IP像10.114.237.132(我認爲這是一個私人IP)除公共IP地址以外。我也試過request.env ['REMOTE_ADDR'] 我的問題是如何找到用於https請求的客戶端的遠程IP。如何在Rails 2.3.8

+0

@Jesse這是私人地址'10.114.237.132'在範圍10.0.0.0 - 10.255.255.255這是私人範圍。 –

+0

我覺得它的負載均衡器的IP地址。我不確定。 –

+0

海豚是正確的,這是一個私人IP地址。 Bharath,它可能是您提到的負載平衡器,或者是任何內部服務器首先「接收」連接。 IP地址總有被欺騙的可能性。 – Jesse

回答

0

如果這是laod平衡器的IP,請嘗試確定它是否可以爲您提供HTTP標頭以獲取客戶端IP。 如果您可以配置它或者它已經證明它,您可以使用此方法Request.headers()方法檢查HTTP標題。

您應該尋找的標題是X-Forwarded-For

+0

我在中間件中使用了env ['HTTP_X_FORWARDED_FOR']來獲取客戶端ip和代理ip,但它沒有返回anyhting。 –

+0

Paulo Http頭部會有REMOTE_ADDR對嗎?我認爲它也會給代理IP。 –

+0

這將始終取決於負載平衡器是否填充此標頭。就像在HTTP代理中一樣,它取決於代理是否支持或被配置爲填充標頭。您需要檢查您的負載均衡器文檔。 –