我有一个运行在端口3000上的快递服务器。我决定通过nginx设置一个反向代理,以将所有http://test.com重定向到http://test.com:3000。
设置完所有内容后,我制作了一个API进行测试,以显示用户IP:
app.get('/test', function(req, res){
res.json({
ip: req.ip
});
});
ip
有时是127.0.0.1
,而有时是::1
。由于它位于代理之后,因此是正确的。据我所知,它们是等效的,所以我没有深入研究。
我添加以下内容以显示用户真实IP:
app.set("trust proxy", "127.0.0.1");
但是,ip
有时会使用我的真实IP正确显示,但有时会显示::1
。
我必须设置为使其正常工作:
app.set("trust proxy", "loopback");
我是否可以正确解决问题,或者我正在进行危险的黑客攻击?另外,127.0.0.1
和::1
有什么区别?我很困惑。我希望有人能给出详细的答案,使我的概念更清晰。
答案 0 :(得分:3)
基本上127.0.0.1
是IPv4,而::1
是IPv6。实际上,您已正确修复它。为了更加清楚,您可以指定服务器仅侦听IPv4或IPv6:
server.listen(port, "127.0.0.1"); // IPv4
或
server.listen(port, "::1"); // IPv6