1. 程式人生 > >nginx負載均衡後tomcat獲取客戶端真實IP

nginx負載均衡後tomcat獲取客戶端真實IP

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是否已經拿到。