nginx反向代理、让代理节点记录客户端真实IP

在用nginx做反向代理负载均衡时,后端server访问日志不能记录用户客户端的真实IP地址,可以通过proxy_set_header host $host;自定义http协议请求头部报文,通过proxy_set_header x-forwarded-for $remote_addr;记录客户端的真实IP

1.在用nginx做反向代理负载均衡时,后端server访问日志不能记录用户客户端的真实IP地址,可以通过proxy_set_header    host $host;自定义http协议请求头部报文,通过proxy_set_header    x-forwarded-for   $remote_addr;记录客户端的真实IP,(x-forwarded-for 可以自定义)

2.在这里需要特别注意的是,如果后端服务器为httpd时,需要在httpd.conf配置文件修改为  LogFormat "%{x-forwarded-for}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

3.否则不能记录真实IP,而且没有报错。。。

4.如果后端服务器为nginx,则前端代理服务器location段则需要添加proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

Nginx  server段配置如下:

server {

listen       80;

server_name  111.111.111.11;

root        /usr/share/nginx/html;

location ~ \.php$ {

root           /usr/share/nginx/html/;

fastcgi_pass   127.0.0.1:9000;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html/$fastcgi_script_name;

include        fastcgi_params;

proxy_pass  http://test;

        proxy_set_header  Host  $host;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;     #后端服务器为Nginx时

proxy_set_header X-Forwarded-For $remote_addr;    #后端服务器为httpd时

}

}

upstream  test{

server  111.111.111.12;

server  111.111.111.13;

server  111.111.111.14;

 

}

访问日志

111.111.111.11 - - [18/Dec/2017:22:54:52 +0800] "GET /favicon.ico HTTP/1.0" 404 571 "http://111.111.111.11/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" "111.111.111.100"

111.111.111.11为代理服务器IP

111.111.111.100为真实客户端IP

后面3个IP为后端服务器

server  111.111.111.12;

server  111.111.111.13;

server  111.111.111.14;

您还未添加分享代码,请到主题选项中,添加百度分享代码!

您可以选择一种方式赞助本站

支付宝转账赞助

支付宝扫一扫赞助

微信钱包扫描赞助

┊. 恋小布 。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

图片 表情