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

2023-12-23

我的 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/;
    }
}

我将此配置基于教程在这里 https://testdriven.io/blog/dockerizing-django-with-postgres-gunicorn-and-nginx/#nginx。经过一番研究,看起来像是设置Hostheader 允许 Django API 确定原始客户端的 IP 地址(而不是代理的 IP 地址)。

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


来自Mozilla 文档 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐