nginx 反向代理使tomcat日誌中無法獲取真實IP-解決辦法
阿新 • • 發佈:2019-02-10
使用Nginx作為反向代理時,Tomcat的日誌記錄的客戶端IP就不在是真實的客戶端IP,而是Nginx代理的IP。要解決這個問題可以在Nginx配置一個新的Header,用來儲存$remote_add,然後再Tomcat獲取記錄這個值。
1.Nginx新增配置:
proxy_set_header X-Real-IP $remote_addr;
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了。
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了。