双层nginx代理获取真实访问ip
2012-05-04 11:28
495 查看
环境介绍:
两台nginx代理服务器,第一台接收真实客户端的请求,然后调度到第二台nginx代理服务器上,最后调度到web后端。
需求:
因为第二台nginx是接收第一台nginx的请求,所以默认情况下日志记录的全部是第一台nginx的ip访问,现在在要求第二台nginx的访问日志能够记录真实客户端的ip。
第一台nginx配置:
proxy_set_header Host $host; 把访问的域名加到请求包的头部信息中,能够找到后端web的虚拟主机。
proxy_set_header X-Forwarded-For $remote_addr; 把客户端真是ip地址加到请求包的头部信息中,以X-Forwarded-For做标示。
第二台nginx配置:
首先在编译的时候加上--with-http_realip_module这个模块。
参考:http://wiki.nginx.org/HttpRealIpModule
set_real_ip_from 192.168.253.103; 第一台nginx的ip的地址,指定真实ip来自哪儿。
real_ip_header X-Forwarded-For; 从第一台nginx上获取客户端的ip,因为真实客户端的ip已经在第一台nginx设置中被X-Forwarded-For标示,所以冲header头中提取它。
这样就能在第二台nginx代理服务器的访问日志中看到真实客户端访问ip。
本文出自 “生命不息奋斗不止” 博客,谢绝转载!
两台nginx代理服务器,第一台接收真实客户端的请求,然后调度到第二台nginx代理服务器上,最后调度到web后端。
需求:
因为第二台nginx是接收第一台nginx的请求,所以默认情况下日志记录的全部是第一台nginx的ip访问,现在在要求第二台nginx的访问日志能够记录真实客户端的ip。
第一台nginx配置:
worker_processes 1; error_log logs/error.log notice; pid logs/nginx.pid; worker_rlimit_nofile 65535; events { use epoll; worker_connections 65535; } http { include mime.types; default_type application/octet-stream; keepalive_timeout 65; proxy_temp_path /data0/proxy_temp_path; proxy_cache_path /data0/proxy_cache_path levels=1:2 keys_zone=cache:128m inactive=1d max_size=1g; upstream hdwiki { server 192.168.253.105; } server { listen 80; server_name www.hdwiki.com; index index.html index.htm; location / { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://hdwiki; } access_log logs/access_hdwiki.log; } }
proxy_set_header Host $host; 把访问的域名加到请求包的头部信息中,能够找到后端web的虚拟主机。
proxy_set_header X-Forwarded-For $remote_addr; 把客户端真是ip地址加到请求包的头部信息中,以X-Forwarded-For做标示。
第二台nginx配置:
首先在编译的时候加上--with-http_realip_module这个模块。
参考:http://wiki.nginx.org/HttpRealIpModule
worker_processes 1; #error_log logs/error.log notice; pid logs/nginx.pid; worker_rlimit_nofile 65535; events { use epoll; worker_connections 65535; } http { include mime.types; default_type application/octet-stream; keepalive_timeout 65; proxy_temp_path /data0/proxy_temp_path; proxy_cache_path /data0/proxy_cache_path levels=1:2 keys_zone=cache:128m inactive=1d max_size=1g; upstream hdwiki { server 192.168.253.105:8090; } server { listen 80; server_name www.hdwiki.com; index index.html index.htm; location / { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; set_real_ip_from 192.168.253.103; real_ip_header X-Forwarded-For; proxy_pass http://hdwiki; } access_log logs/access_hdwiki.log; } }
set_real_ip_from 192.168.253.103; 第一台nginx的ip的地址,指定真实ip来自哪儿。
real_ip_header X-Forwarded-For; 从第一台nginx上获取客户端的ip,因为真实客户端的ip已经在第一台nginx设置中被X-Forwarded-For标示,所以冲header头中提取它。
这样就能在第二台nginx代理服务器的访问日志中看到真实客户端访问ip。
本文出自 “生命不息奋斗不止” 博客,谢绝转载!
相关文章推荐
- nginx前端,tomcat后端服务器获取客户的真实IP,包括tomcat访问日志获取真实IP的配置
- nginx反向代理后应用程序如何获取客户端真实IP?
- nginx反向代理后应用程序如何获取客户端真实IP?
- nginx代理web,后端无法获取用户真实IP
- nginx反向代理后应用程序如何获取客户端真实IP?
- nginx反向代理后应用程序如何获取客户端真实IP?
- Nginx在CDN加速之后,获取用户真实IP做并发访问限制的方法
- nginx反向代理后应用程序如何获取客户端真实IP?
- nginx反向代理后应用程序如何获取客户端真实IP?
- Nginx在CDN加速之后,获取用户真实IP做并发访问限制的方法
- 以cdn为前导,使用Nginx服务器反向代理,获取客户端真实ip的办法
- nginx反向代理后应用程序如何获取客户端真实IP?
- nginx反向代理后应用程序如何获取客户端真实IP?
- linux 获取经过N层Nginx转发的访问来源真实IP
- nginx代理获取用户真实ip
- Nginx反向代理获取客户端真实IP
- nginx反向代理后应用程序如何获取客户端真实IP?
- nginx反向代理后应用程序如何获取客户端真实IP?
- Nginx反向代理获取客户端真实IP
- nginx反向代理后应用程序如何获取客户端真实IP?