我有一个在Docker容器中运行的节点快速应用程序,并通过应用程序尝试记录传入请求的IP地址。由于我在防火墙后面运行了所有内容,因此使用了类似这样的内容" req.headers [' x-forwarded-for'] || req.connection.remoteAddress"但它每次都记录相同的IP地址,无论请求来源如何。即使它是由不同的IP制作的,我也总能看到相同的IP。
是否有一种优雅的方式来记录在docker容器中运行的节点应用程序的IP地址。将使用此包帮助https://www.npmjs.com/package/ip
如果没有,请建议一种捕获IP地址的方法。
答案 0 :(得分:0)
我知道这是旧的,但这可能仍然有帮助。
对我有用的是我的 Express 容器和 NGINX 在主机上作为反向代理运行的组合。
对于 NGINX,我添加了以下设置:
proxy_pass http://localhost:9461; # <-- put the exposed port of the Docker Express container
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
根据上述内容,一旦我访问我的 Express 容器(通过我指定的 NGINX server_name
),请求的 IP 将存储在 req.headers['x-forwarded-for']
中:
console.log("IP of this request is:", req.headers['x-forwarded-for']);