实验:测试前端使用nginx做代理,在后端服务器上获取客户端真实IP
真实服务器:192.168.10.11
192.168.10.14
代理服务器:192.168.10.12
客 户 端:192.168.10.13
192.168.10.2
1.在nginx代理服务器上设置
upstream web {
server 192.168.10.11;
server 192.168.10.14;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://web;
proxy_set_header host $host;
proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;
proxy_set_header X-real-ip $remote_addr;
}
2.在后端服务器设置
log_format test1 ‘$remote_addr - $http_x_forwarded_for‘;
access_log logs/access.log test1;
3.使用客户端访问代理服务器
4.查看后端服务器访问日志
192.168.10.12 - 192.168.10.13
192.168.10.12 - 192.168.10.13
192.168.10.12 - 192.168.10.2
192.168.10.12 - 192.168.10.2
可以看出,真实服务器上的$remote_addr是代理的IP,$http_x_forwarded_for就是客户端的真实IP了.
原文:http://11654930.blog.51cto.com/11644930/1892872