我在 docker 容器中托管了一个带有 express.js 的 node.js 服务器。我的容器的地址是 172.17.0.62 而我使用 nginx 将流量重定向到 172.17.0.62
我可以访问我的服务器。但是当我使用
console.log(req.ip + ' ' + req.protocol + ' ' + req.originalUrl);
Run Code Online (Sandbox Code Playgroud)
记录流量。req.ip 始终为 172.17.42.1。我想获取我的网页查看者的 ip
我在我的 nginx 配置中使用它
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Run Code Online (Sandbox Code Playgroud)
和
cat /proc/sys/net/ipv4/ip_forward # output 1
Run Code Online (Sandbox Code Playgroud)
我没有用过 docker - 但你应该能够从 x-forwarded-for 得到你想要的信息: Express.js: how to get remote client address
从上面的链接:
var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
Run Code Online (Sandbox Code Playgroud)
哦,有趣的是 - 上述线程中的第二个答案实际上可能更适合您的需求。而不是在任何地方更改您的代码,而是尝试获取用户的 IP 地址。您可以更改初始化 express 的方式:
app.enable('trust proxy');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2762 次 |
| 最近记录: |