nginx默认配置文件里面是没有进行日志转发配置的,这个需要我们自己手动来操作了,当然后端的real server不同时操作方法是不一样的,这里我们分别例举几种情况来说明一下。
nginx做前端,转发日志到后端nginx服务器:
因为架构的需要采用多级 Nginx 反向代理,但是后端的程序获取到的客户端 IP 都是前端 Nginx 的 IP,问题的根源在于后端的 Nginx 在 HTTP Header 中取客户端 IP 时没有取对正确的值。
同样适用于前端是 Squid 或者其他反向代理的情况。
首先前端的 Nginx 要做转发客户端 IP 的配置:
location / { proxy_pass http://localhost:8000; # Forward the user's IP address to Rails proxy_set_header X-Real-IP $remote_addr; # needed for HTTPS # proxy_set_header X_FORWARDED_PROTO https; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_redirect off; }
后端的 Nginx 需要安装一个 Module: NginxHttpRealIpModule,编译的时候默认不包含此 Module,需要重新编译安装 Nginx,configure 的时候加上 –with-http_realip_module,Nginx 升级或者添加/删除 Module 时支持热切换,可以避免中断服务。
升级后配置 NginxHttpRealIpModule,set_real_ip_from 就是指前端 Nginx 或者 Squid 的 IP:
location / { proxy_pass http://localhost:8000; # Forward the user's IP address to Rails proxy_set_header X-Real-IP $remote_addr; # needed for HTTPS # proxy_set_header X_FORWARDED_PROTO https; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_redirect off; # NginxHttpRealIpModule set_real_ip_from 192.168.1.0/24; set_real_ip_from 192.168.2.1; real_ip_header X-Real-IP; }
最后记得 reload Nginx config
nginx做前端,转发日志到后端apache服务器:
apache日志中默认有%h来指定来访客户端你的ip地址,但是使用了nginx代理上网则%h获得的ip地址会不准。
这就需要对nginx 和apache的配置文件设定 X-Forwarded-For 参数来获取客户端真实的ip地址。对于使用了反向代理的客户端,跟踪真实的ip地址。
/usr/nginx/conf/nginx.conf 添加以下参数:
proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Real-IP $remote_addr;
同时修改:
server { listen 80; server_name 域名 ; proxy_redirect off; location / { proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header Host $host; proxy_pass http://域名; } access_log off; }
重启nginx使配置生效。
apache端需要安装一个第三方模块"mod_rpaf"了, 官方网站: http://stderr.net/apache/rpaf/
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz tar zxvf mod_rpaf-0.6.tar.gz cd mod_rpaf-0.6 /opt/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
修改apache配置 /usr/apache2/conf/httpd.conf
LoadModule rpaf_module modules/mod_rpaf-2.0.so RPAFenable On RPAFsethostname On RPAFproxy_ips ip地址 #Nginx所在服务器的IP RPAFheader X-Forwarded-For
重启apache 查看日志就可以看见日志中已经获得到真实ip了。
nginx做前端,转发日志到后端IIS服务器:
iis 如果放在反向代理后面,日志里的ip是反向代理服务器的ip,不是真正用户的ip,想要记录用户的ip要做两件事。
1.在反向代理设置X-Forwarded-For段,以下为nginx下的配置示例:
server { location { …… proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; …… } }
2.在iis站点上安装下面这个isapi filter,这东西是在f5的开发论坛上找到的,按开发者的话说,是为了解决iis放在f5后记录不到用户ip的问题,-_-# 管他前端是f5还是nginx还是squid还是haproxy。都可以用。应该不错。装完之后重启下iis就搞定了。
http://devcentral.f5.com/weblogs/Joe/archive/2009/08/19/x_forwarded_for_log_filter_for_windows_servers.aspx
回头看下iis的日志,里面的ip已经是用户的真实ip了。
Nginx,反向代理
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 群星2001-大宅门电视剧原声大碟[首版][WAV+CUE]
- 群星2001-芭啦芭啦樱之花电影原声带AVCD[香港首版][WAV+CUE]
- 群星2001-重回摇滚舞台·纪念薛岳逝世十周年演唱会2CD[引进版][WAV+CUE]
- 群星2001-林夕音乐词典2CD[香港首版][WAV+CUE]
- 《101系列 金声回忆 101 蔡琴》[WAV+CUE][3.23GB]
- 《101系列:True Legend 101 陈百强》[WAV+CUE][2.8GB]
- 《陈百强28CD合集》1979-1993 低速原抓[CUE+WAV][8.3G]
- 【蓝调摇滚】JohnHaydock-2024-StraightLineOnACurvedRoad(FLAC)
- 感受独特魅力《百万双钢琴演奏曲》5CD[WAV+CUE]
- 【古典音乐】安娜·莫福《咏叹调》美国版SACD[WAV+CUE]
- 《法拉利·汽车专用试音碟》名贵音响顶级黑胶金碟[CUE+WAV][478M]
- 群星《惠威试音碟5CD》顶级音质[CUE+APE][1.7G]
- 《101系列:百分百3CD 100首百分百经典金曲》[WAV+CUE][2.9GB]
- 群星.2004-《第八届广州国际高级音响展》HIFI珍藏版[APE+CUE]
- 红音堂《蔡琴往事系列》SQCD紫银合金5CD[wav]