跳到主要内容

如何解决Express经过Nginx代理后req.ip不正确问题?

· 1 分钟阅读 · - · - ·

最近在用Express重构我的个人小站。 在做访问记录的时候发现Nginx已经加了代理头,但Express还是拿不到真实客户端ip,其实还需要加一个Express配置项。

原来的Nginx配置

location @node-express {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
拿到空值或本地IP拿到空值或本地IP
图1
拿到空值或本地IP

修改后的Nginx配置

location @node-express {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $remote_addr;
}

修改后还是无法拿到真实的ip,还需要给express加一个配置项

app.set("trust proxy", true);
修改后可以拿到真实值修改后可以拿到真实值
图2
修改后可以拿到真实值
该内容为何方原创,转载请注明本页地址
https://iamhefang.cn/code/fix-express-req-ip-with-nginx-proxy