1. 程式人生 > >nginx 反向代理使tomcat日誌中無法獲取真實IP-解決辦法

nginx 反向代理使tomcat日誌中無法獲取真實IP-解決辦法

       使用Nginx作為反向代理時,Tomcat的日誌記錄的客戶端IP就不在是真實的客戶端IP,而是Nginx代理的IP。要解決這個問題可以在Nginx配置一個新的Header,用來儲存$remote_add,然後再Tomcat獲取記錄這個值。

1.Nginx新增配置:
proxy_set_header  X-Real-IP  $remote_addr;  

可以參見:http://wiki.nginx.org/NginxHttpProxyModule

其實就是新增了一個名為X-Real-IP值為真實客戶端IP的頭資訊。


2.修改tomcat日誌配置:

<Valve className="org.apache.catalina.valves.AccessLogValve"  
                directory="logs"  prefix="tomcat_access_log." suffix=".txt"  
                pattern="%a %r %t %{X-Real-IP}i" resolveHosts="false"/>  

沒有Nginx這一層的時候直接用%a就可以獲得客戶端IP,現在我們得用%{X-Real-IP}i 來獲得真實的IP了。