nginx負載均衡後tomcat獲取客戶端真實IP
阿新 • • 發佈:2019-01-22
tomcat在未加nginx前端負載均衡的情況下訪問日誌中可以直接拿到客戶端額真實IP地址,但是加了nginx前端負載均衡之後tomcat訪問日誌中得到的為nginx的ip,不是客戶端的ip,獲取客戶端的ip可以參照如下方法:
1. 配置nginx
要解決這個問題可以在Nginx配置一個新的Header,用來儲存$remote_add,然後再Tomcat獲取記錄這個值。
新增nginx配置:
server { listen 80; server_name www.xxxxx.com; location / { proxy_pass http://IP:8080/; proxy_set_header X-Real-IP $remote_addr; } }
其實就是新增了一個名為X-Real-IP值為真實客戶端IP的頭資訊。
2. tomcat配置
tomcat配置檔案server.xml中找到部分,將value替換為如下資訊:
<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"/>
3. 檢查
重啟nginx和tomcat服務,客戶端進行訪問,檢查訪問日誌檔案中客戶端ip是否已經拿到。