express 代理
...小于 1 分钟
express 代理
如果express或者你的其它的程序的服务被nginx这样的代理服务器代理过后,在程序里拿hostname这样的信息的时候通常会得到一个ip地址,比如这样
req.get('hostname') //127.0.0.1
这肯定不是我们想要的结果,那么怎么才能得到真实的地址呢。 首先需要再nginx转发的时候把这些信息带过来。
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
hostname也可以通过设置X-Forwarded-Host来获取
proxy_set_header X-Forwarded-Host $scheme;
不过这时候就需要在express中设置信任的代理服务器ip地址
app.set('trust proxy', '123.123.123.123')
也可以通过一个回调返回boolean值来设置
app.set('trust proxy', function (ip) {
if (ip === '127.0.0.1') return true; // trusted IPs
else return false;
});