X-Forwarded-For 是一个 HTTP 头部字段,用于记录客户端 IP 地址。在 Nginx 服务器中,当请求经过多个代理服务器(如负载均衡器、反向代理等)时,客户端的真实 IP 地址可能会被隐藏。为了获取客户端的真实 IP 地址,可以在 Nginx 配置文件中使用 X-Forwarded-For 头部字段。
当 Nginx 作为反向代理服务器时,它会在接收到客户端请求后,将请求转发给上游服务器。在这个过程中,Nginx 可以修改或添加 HTTP 头部字段,包括 X-Forwarded-For。Nginx 的配置示例如下:
location / {
proxy_pass http://upstream_server;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
在这个示例中,proxy_set_header 指令用于设置 X-Forwarded-For 头部字段。$proxy_add_x_forwarded_for 变量包含了原始的 X-Forwarded-For 值(如果存在),并在其基础上添加当前服务器的 IP 地址。这样,当请求到达上游服务器时,X-Forwarded-For 头部字段将包含客户端的真实 IP 地址以及经过的所有代理服务器的 IP 地址。
需要注意的是,X-Forwarded-For 头部字段可以被客户端伪造,因此在使用它获取客户端 IP 地址时需要谨慎。在信任的环境中,例如内部网络,使用 X-Forwarded-For 是可行的。但在公共互联网环境中,建议使用更安全的方法,如 HTTP Basic Authentication 或 API 密钥等,来保护客户端 IP 地址。