X-Forwarded-For 是一个 HTTP 头部字段,用于记录客户端 IP 地址。在 Nginx 服务器中,它通常用于获取客户端的真实 IP 地址,特别是在使用了反向代理(如负载均衡器、CDN 或其他代理服务器)的情况下。
当请求经过多个代理服务器时,每个代理服务器都会在请求头中添加自己的 IP 地址。X-Forwarded-For 字段会包含一个逗号分隔的 IP 地址列表,其中第一个 IP 地址是客户端的真实 IP 地址,后续的 IP 地址则是经过的代理服务器的 IP 地址。
例如,当一个请求从客户端发送到 Nginx 服务器,然后经过两个代理服务器 A 和 B,最终到达 Nginx 服务器时,Nginx 日志中的 X-Forwarded-For 字段可能如下所示:
X-Forwarded-For: 192.168.1.1, 10.0.0.1, 172.16.0.1
在这个例子中,192.168.1.1 是客户端的真实 IP 地址,10.0.0.1 是代理服务器 A 的 IP 地址,172.16.0.1 是代理服务器 B 的 IP 地址。
要正确记录客户端的真实 IP 地址,需要在 Nginx 配置文件中使用 $http_x_forwarded_for 变量。例如,可以将以下配置添加到 Nginx 配置文件中,以便在访问日志中记录客户端的真实 IP 地址:
log_format main '$http_x_forwarded_for - $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;
需要注意的是,X-Forwarded-For 头部字段可以被伪造,因此不建议将其用于安全相关的场景。
以上就是关于“nginx日志中的X-Forwarded-For有何作用”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm