一:环境描述 A: windows client 10.43.2.213 B: Nginx proxy 10.43.2.11 C: Nginx web-server 10.43.2.54 其中,A,B,C三台主机,A是通过windows中的浏览器,B是Nginx代理服务器,C是用Nginx做的web服务器,访问web的流程如下: A————>B————>C 二:修改Nginx web-server配置文件如下:
1 2 3 4 5 6 7 8 9 10 11 |
server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; set_real_ip_from 10.43.2.11; real_ip_header X-Real-IP; }
|
1 2 |
增加 set_real_ip_from 10.43.2.11;告诉web-server从哪里获得客户端地址 real_ip_header X-Real-IP;存储X-Real-IP变量名称
|
1 2 3 4 5 6 7 |
http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$http_x_forwarded_for_$remote_addr-$remote_user[$time_local]' '"$request"$status $body_bytes_sent' '"$http_referer" "$http_user_agent"'; access_log /var/log/nginx/access.log main;
|
log_format 制定Log的记录格式。 如果不告诉web-server从哪里获取客户端的IP地址的话,web-server默认只能获得代理服务器的IP地址。 三:效果演示
在A上的浏览器访问: 查看日志结果如下:/var/log/nginx/access.log
其中第一个红框内的是为增加set_real_ip_from和real_ip_header的日志记录结果,下边的是增加后的结果,从结果分析可以看的web-server已经能够准确获得远程客户端的真实IP地址了。 |