使用Nginx作为反向代理时,Tomcat的日志记录的客户端IP就不在是真实的客户端IP,而是Nginx代理的IP。要解决这个问题可以在Nginx配置一个新的Header,用来存储$remote_add,然后再Tomcat获取记录这个值。

1.nginx nginx.conf中加

server

    {

   listen  8001;

   server_name www.123.com;

   index index.jsp;

   root /opt/123.com/;

   location ~ \.(action|jsp|do|gif|png|java|jar|jpg|jpeg|js|javascript|swf|css|xap|txt)?$

   {

       proxy_set_header Host www.123.com:8001;

       proxy_pass http://web;

       proxy_set_header X-Forwarded-For $remote_addr;      

       proxy_set_header X-Real-IP $remote_addr;

       proxy_set_header Host $host;

       }

       access_log /var/log/web-nginx_8001.log;

   }

2.tomcat server.xml中加:

当然你也可以diy日志文件里面的内容,顺序,打印项都可以调整。

< Valve className = "org.apache.catalina.valves.AccessLogValve" directory = "logs"
prefix = "localhost_access_log." suffix = ".txt"
pattern = "%{X-FORWARDED-FOR}i %l %u %t %r %s %b %D %q %{User-Agent}i %T" resolveHosts = "false" / >

3、日志结果
[root@localhost ~]# tail -f /opt/tomcat/logs/localhost_access.log
-------------------------------------------------------------------------------------------------------------------
114.249.197.149 - - [04/Jun/2013:21:29:41 +0800] GET /index.jsp HTTP/1.0 302 - 45  Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.5 Safari/537.31 0.045
114.249.197.149 - - [04/Jun/2013:21:29:47 +0800] GET /login.action HTTP/1.0 200 5054 5572  Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.5 Safari/537.31 5.572
114.249.197.149 - - [04/Jun/2013:21:29:47 +0800] GET /p_w_picpaths/login/spacer.gif HTTP/1.0 200 43 1  Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.5 Safari/537.31 0.001
114.249.197.149 - - [04/Jun/2013:21:29:47 +0800] GET /p_w_picpaths/login/login_r1_c1.jpg HTTP/1.0 200 23667 1  Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.5 Safari/537.31 0.001
114.249.197.149 - - [04/Jun/2013:21:29:47 +0800] GET /p_w_picpaths/login/login_r1_c3.jpg HTTP/1.0 200 29366 2  Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.5 Safari/537.31 0.002