在nginx中设置“X-Forwarded-For”标头的目的是什么

Joh*_*etz 10 django nginx x-forwarded-for

我的 Django 应用程序有以下 Nginx 配置:

upstream api {
    server localhost:8000;
}

server {
    listen 80;

    location / {
        proxy_pass http://api;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /staticfiles {
        alias /app/static/;
    }
}
Run Code Online (Sandbox Code Playgroud)

我根据此处的教程进行了此配置。经过一些研究,看起来设置Host标头允许 Django API 确定原始客户端的 IP 地址(而不是代理的 IP 地址)。

标题有什么意义X-Forwarded-For?我在 nginx 日志中看到一个名为的字段$http_x_forwarded_for,但我不确定它是否相关。

Ste*_*n C 14

来自Mozilla 文档

(XFF)标X-Forwarded-For头是事实上的标准标头,用于识别通过 HTTP 代理或负载均衡器连接到 Web 服务器的客户端的原始 IP 地址。当客户端和服务器之间的流量被拦截时,服务器访问日志仅包含代理或负载均衡器的 IP 地址。要查看客户端的原始 IP 地址,X-Forwarded-For请使用请求标头。

事实上,我认为你误解了Host标题。我的理解是,它将是 nginx 服务器的 IP。