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

8

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

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

我基于这里的教程来配置。经过一些研究,发现设置Host标头可以让Django API确定原始客户端的IP地址(而不是代理的IP地址)。

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

1个回答

12
Mozilla文档

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

实际上,我认为您误解了Host头。 我的理解是它将是nginx服务器的IP地址。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接