Express - req.ip返回127.0.0.1

wdp*_*phd 15 proxy nginx node.js express

我的快速服务器在端口3000上运行,nginx用于反向代理.

req.ip总是返回127.0.0.1,req.ips返回一个空数组

app.enable('trust proxy');

使用/不启用信任代理时,x-forwarded-for不起作用:

var ip_addr = req.headers['X-FORWARDED-FOR'] || req.connection.remoteAddress;
Run Code Online (Sandbox Code Playgroud)

nginx配置:

server {
    listen 80;
    server_name localhost;
    access_log /var/log/nginx/dev_localhost.log;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

如何获取请求客户端的IP地址?

msc*_*dex 21

您需要将适当的X-Forwarded-For标头传递给您的上游.将这些行添加到上游配置中:

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

  • 如果您从`localhost`连接到`localhost`,您还会期待什么? (10认同)

Lan*_*nce 8

根据快递文件:

在代理背后表达

在代理后面运行 Express 应用程序时,将应用程序变量信任代理设置(通过使用 app.set())为下表中列出的值之一。

您可以将其设置为布尔值、IP 地址、数字或自定义函数。如果您只想让客户端代理到您的 Express 应用程序的req.ip,您可以将其设置为 true。

app.set('trust proxy',true); 
app.get("/", (req, res)=>{
    console.log(req.ip); 
}); 
Run Code Online (Sandbox Code Playgroud)