温馨提示×

nginx日志里的X-Forwarded-For怎么用

小樊
53
2025-07-28 14:46:31
栏目: 编程语言

X-Forwarded-For 是一个 HTTP 头部字段,用于记录通过 HTTP 代理或负载均衡器连接到 Web 服务器的客户端的原始 IP 地址。当请求经过多个代理时,X-Forwarded-For 的值会包含一个 IP 地址列表,每个 IP 地址代表一个跳点。

在 Nginx 中,你可以使用 $http_x_forwarded_for 变量来访问这个字段的值。以下是一些使用 X-Forwarded-For 的示例:

  1. 将客户端的原始 IP 地址记录到访问日志中:
http {
    log_format custom '$http_x_forwarded_for - $remote_user [$time_local] '
                      '"$request" $status $body_bytes_sent '
                      '"$http_referer" "$http_user_agent"';

    access_log /var/log/nginx/access.log custom;
}

在这个例子中,我们创建了一个自定义的日志格式,其中包含了 $http_x_forwarded_for 变量。这样,访问日志中将记录客户端的原始 IP 地址,而不是经过代理的 IP 地址。

  1. 将客户端的原始 IP 地址传递给后端服务器:
location / {
    proxy_set_header X-Real-IP $http_x_forwarded_for;
    proxy_pass http://backend;
}

在这个例子中,我们使用 proxy_set_header 指令将 $http_x_forwarded_for 变量的值设置为 X-Real-IP 请求头。这样,后端服务器就可以通过检查 X-Real-IP 请求头来获取客户端的原始 IP 地址。

注意:在使用 X-Forwarded-For 时,要确保信任的代理服务器正确设置此字段。否则,恶意用户可能会伪造 IP 地址。为了防止这种情况,你可以使用 X-Forwarded-ProtoX-Forwarded-Host 等其他字段来验证请求的来源。

0