在用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;
您还未添加分享代码,请到主题选项中,添加百度分享代码!
您可以选择一种方式赞助本站
支付宝转账赞助
支付宝扫一扫赞助
微信钱包扫描赞助