当 运行 node.js 落后于 mod_proxy 时如何获得 req.hostname

How to get req.hostname when running node.js behind apache with mod_proxy

我的 node.js 应用程序使用 req.hostname 将某些页面从 HTTP 重定向到 HTTPS,如下所示:

app.get('*', function(req, res){
    res.redirect('https://' + req.hostname + req.url);
});

这在 运行 本地主机上的应用程序时非常有效。但是当应用程序在 mod_proxy 后面的服务器上运行时,req.hostname 不包含域名。相反,它只包含 localhost。如何获取域名?

在您的 Apache 设置中,您必须添加:

ProxyPreserveHost On

这将告诉 apache 在向您的节点应用程序执行代理传递时保留主机名