快递:了解信任代理

时间:2018-08-01 10:11:32

标签: node.js express reverse-proxy

我有一个运行在端口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有什么区别?我很困惑。我希望有人能给出详细的答案,使我的概念更清晰。

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