2016-04-30 62 views
1

我的服務器處理多個網站,其中大多數與Apache,PHP等的Apache + Python的瓶:訪問者IP總是指向127.0.0.1

但其中一人(www.mywebsite.com)使用Python的web服務器,它監聽在端口8092.因此,這Apache配置:

<VirtualHost *:80> 
    ServerName mywebsite.com 
    ServerAlias *.mywebsite.com 
    RewriteEngine On 
    RewriteRule /(.*)   http://localhost:8092/$1 [P,L] 
</VirtualHost> 

現在,當用戶從網上來,連接到www.mywebsite.com,它的工作原理:Python的處理它,一切都還好。

問題:IP,我得到的,在我的Python代碼使用bottle有:

ip = request.environ.get('REMOTE_ADDR') 

總是 127.0.0.1。

如何獲取訪客的真實IP地址?

回答

2

您的虛擬主機正在使用proxy rewriting。客戶端連接到Apache,它會打開到您的應用程序的代理連接,重寫URL並代理請求。應用程序和客戶端之間沒有真正的聯繫。

由於您的應用程序和客戶端之間沒有直接連接,除非您告訴apache將其發送到您的應用程序,否則您無法獲得「真正的IP」。通常的做法是設置X-Forwarded-For標題。您可能不得不明確使用mod_proxy來做到這一點。

+0

你說得對,'request.environ.get('HTTP_X_FORWARDED_FOR')'工作正常。 – Basj

相關問題