Nginx+Tomcat 配置tomcat日志返回真实客户端IP

1.nginx配置

location ~ {
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  ......
}


2.Tomcat配置${CATALINA_HOME}/conf/server.xml

......
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/logs/tomcat" prefix="search_access" suffix=".log"
pattern="%{X-Real-IP}i %l %u %t %r %s %b %D %{User-Agent}i" resolveHosts="false"/>
......

 

3.X-Forwarded-For 和 X-Real-IP 获取客户端的ip的区别:

一般来说,X-Forwarded-For是用于记录代理信息的,每经过一级代理(匿名代理除外),代理服务器都会把这次请求的来源IP追加在X-Forwarded-For中 来自4.4.4.4的一个请求,header包含这样一行 X-Forwarded-For: 1.1.1.1, 2.2.2.2, 3.3.3.3 代表 请求由1.1.1.1发出,经过三层代理,第一层是2.2.2.2,第二层是3.3.3.3,而本次请求的来源IP 4.4.4.4是第三层代理 而X-Real-IP,一般只记录真实发出请求的客户端IP,上面的例子,如果配置了X-Read-IP,将会是 X-Real-IP: 1.1.1.1 所以 ,如果只有一层代理,这两个头的值就是一样的 

 

Reference:

http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html

posted @ 2018-12-03 16:19  2240930501  阅读(437)  评论(0编辑  收藏  举报