nginx使用map模块从x-forwarded获取源端IP的目的是为了获取真实的客户端IP地址。在一些情况下,客户端的请求经过多层代理或负载均衡服务器后,到达nginx服务器时,nginx默认会将代理服务器的IP地址作为客户端IP地址。为了获取真实的客户端IP地址,可以使用nginx的map模块来解析x-forwarded-for请求头字段。
x-forwarded-for是一个HTTP请求头字段,用于记录客户端的真实IP地址。当请求经过代理服务器时,代理服务器会将客户端的IP地址添加到x-forwarded-for字段中,并将自己的IP地址添加到该字段的末尾。这样,当请求到达nginx服务器时,可以通过解析x-forwarded-for字段获取真实的客户端IP地址。
使用nginx的map模块从x-forwarded-for获取源端IP的配置如下:
http {
map $http_x_forwarded_for $real_ip {
default $remote_addr;
"~^(?P<ip>[^,]+)" $ip;
}
}
例如,在nginx的access_log中记录客户端IP地址的配置如下:
http {
log_format main '$real_ip - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
}
这样配置后,nginx会从x-forwarded-for字段获取源端IP,并记录在access_log中。
推荐的腾讯云相关产品:腾讯云CDN(内容分发网络)可以加速静态资源的访问,提高网站的访问速度和稳定性。详情请参考腾讯云CDN产品介绍:https://cloud.tencent.com/product/cdn
领取专属 10元无门槛券
手把手带您无忧上云