nginx 未设置 x-forwarded-for 标头

nginx 未设置 x-forwarded-for 标头

我想获取访问我页面的客户端的 IP 地址。我的应用程序在代理后面运行,因此我将此配置设置为我的 nginx 文件:

proxy_set_header X-Forwarded-For $remote_addr;

现在我尝试在 express 中获取这样的 IP 地址

req.ip
req.headers["x-forwarded-for"]
req.ips
req.connection.remoteAdress

似乎没有什么效果。我还将信任代理设置为 true

app.set("trust proxy", true);

但其他配置(例如proxy_set_header Host或)proxy_set_header Connection "upgrade"都可以正常工作。我做错了什么?

答案1

将此配置添加到你的 nginx 配置 =>

proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

在 express 中你可以用这个获取 ip

  let ip = req.headers['x-forwarded-for'] ||
            req.connection.remoteAddress ||
            req.socket.remoteAddress ||
            (req.connection.socket ? req.connection.socket.remoteAddress : null);

相关内容