前端nginx代理服务器,后端tomcat记录真实IP

nginx+tomcat这种架构,如果后端tomcat配置保持默认,那么tomcat的访问日志里,记录的就是前端nginx的IP地址,而不是真实的访问IP。业务需求,需要对nginx、tomcat做如下配置:

1)nginx配置

......

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配置

......

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/logs/tomcat"

prefix="search_access" suffix=".log"

pattern="%{X-FORWARDED-FOR}i %l %u %t %r %s %b %D %{User-Agent}i" resolveHosts="false"/>

......

3)日志效果

172.16.100.220 - - [12/Nov/2015:11:22:11 +0800] GET
/elesearch-search-api/search/restaurant.json?start=0&end=1&lbs=POINT%28120.285468902%2031.5033700783%29&rt=id&tq=id:328864
HTTP/1.0 200 102 2 python-requests/2.4.3 CPython/2.7.5
Linux/3.10.0-229.11.1.el7.x86_64

172.16.100.222 - - [12/Nov/2015:11:22:11 +0800] GET
/elesearch-search-api/search/restaurantv5home.json?rt=id%2Cdelivery_price&lbs=POINT%28120.387601+36.273438%29&end=500&uid=22454922&start=0&from=webapi
HTTP/1.0 200 6404 11 python-requests/2.7.0 CPython/2.7.5
Linux/3.10.0-229.el7.x86_64

10.0.40.91
- - [12/Nov/2015:11:22:11 +0800] GET
/elesearch-search-api/search/restaurant.json?start=0&end=1&lbs=POINT%28116.316306833%2039.9776800442%29&rt=id&tq=id:376608
HTTP/1.0 200 119 3 python-requests/2.4.3 CPython/2.7.5
Linux/3.10.0-229.11.1.el7.x86_64

现在我们主要来看一下pattern配置段,它用于指定日志的输出格式。有效的日志格式模式可以参见下面内容,如下字符串,其对应的信息由指定的响应内容取代:

%a - 远程IP地址

%A - 本地IP地址

%b - 发送的字节数,不包括HTTP头,或“ - ”如果没有发送字节

%B - 发送的字节数,不包括HTTP头

%h - 远程主机名

%H - 请求协议

%l (小写的L)- 远程逻辑从identd的用户名(总是返回‘ - ‘)

%m - 请求方法

%p - 本地端口

%q - 查询字符串(在前面加上一个“?”如果它存在,否则是一个空字符串

%r - 第一行的要求

%s - 响应的HTTP状态代码

%S - 用户会话ID

%t - 日期和时间,在通用日志格式

%u - 远程用户身份验证

%U - 请求的URL路径

%v - 本地服务器名

%D - 处理请求的时间(以毫秒为单位)

%T - 处理请求的时间(以秒为单位)

%I (大写的i) - 当前请求的线程名称

此外,您可以指定以下别名来设置为普遍使用的模式之一:

common - %h %l %u %t "%r" %s %b

combined - %h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"

另外,还可以将request请求的查询参数、session会话变量值、cookie值或HTTP请求/响应头内容的变量值等内容写入到日志文件。

它仿照了apache的语法:

%{XXX}i xxx代表传入的头(HTTP Request)

%{XXX}o xxx代表传出的响应头(Http Resonse)

%{XXX}c  xxx代表特定的Cookie名

%{XXX}r  xxx代表ServletRequest属性名

%{XXX}s xxx代表HttpSession中的属性名

时间: 2024-12-27 10:22:29

前端nginx代理服务器,后端tomcat记录真实IP的相关文章

nginx前端负载,后端apache获取真实IP设置

原文链接: nginx前端负载,后端apache获取真实IP设置 参考文献: 前端Nginx,后端Apache获取用户真实IP地址  按照第二种方法设置不成功! 网站最前端是nginx,做的PROXY来转发请求到后端的apache上,所以获取的IP 都是NGINX PROXY 机器的IP,这对于分析和记录apache日志等很多基于IP判断的PHP程序都会出现一系列的问题,经过以下两处理便可让apache获取 正式的访问地址:1.修改NGINX的配置文件NGINX.CONF 在里面加上 proxy

【 Tomcat 】后端tomcat获取真实IP

环境: nginx + tomcat nginx.conf 配置: proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://backend_tomcat; tomat server.conf配置: <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs&q

Haproxy 让后端RS记录真实IP

#让RS记录客户端的真实IP #1.先在haproxy.cfg中加入下面参数. listen www ... option forwardfor                #如果后端服务器需要获得客户端真实ip需要配置的参数,必须要放在listen模块下 #2.如果是apache,则加入下面参数 LogFormat  "\"%{X-Forwarded-For}i\"%l %t \"%r\" %>s %b \"%{Referer}i\&q

获取用户真实IP:(模拟:客户端--F5--nginx--tomcat 后端获取用户真实IP)

模拟:客户端--F5--nginx--tomcat 后端获取用户真实IP 192.168.109.137 :nginx01(充当第一层代理==F5)192.168.109.138 :nginx02(二层代理,业务转发)192.168.109.139 :tomcat (后端业务层) 192.168.109.1 :客户端IP ----------------------------------------------------------------------------------------

nginx 获取源IP 获取经过N层Nginx转发的访问来源真实IP

1. nginx 配置文件中获取源IP的配置项 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; #一般的web服务器用这个 X-Real-IP 来获取源IP proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; #如果nginx 服务器是作为反向代理服务器的,则这个配置项是必须的:否则看不到源IP 2. nginx 代理服务器的模块ngi

tomcat 记录 访问者 ip + 访问地址

tomcat 记录 访问者 ip  log4j日志 在tomcat 目录  server.xml里面 加入 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveH

nginx代理,tomcat部署服务器,后端获取客户端真实ip

1.环境部署说明 后端部署在tomcat服务器上,前端用nginx做代理访问 tomcat部署目录 nginx配置: upstream wcfront{     server  localhost:8991;//后台接口 } server {     listen       8998;//h5访问接口     server_name  192.168.2.37;     charset utf-8;     proxy_set_header Host $host:$server_port;  

前端Nginx,后端Apache获取用户真实IP地址

Nginx作为前端,Apache作为后端的情况下,Apache只能获取到Nginx前端的内网ip地址(10.10.0.*),而无法获取到用户的真实ip地址,在这种情况下,后端是Apache如何获取用户真实IP地址? nginx 关键配置 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Nginx+tomcat显示真实IP地址

对于nginx+tomcat这种架构,如果后端tomcat配置保持默认,那么tomcat的访问日志里,记录的就是前端nginx的IP地址,而不是真实的访问IP.因此,需要对nginx.tomcat做如下配置: 1)nginx配置  在nginx.conf配置中修改 server{ listen            80; server_name       www.abc.com; location / { proxy_connect_timeout       3; proxy_send_t