如何使用mod_proxy在apache后面运行node.js时获取req.hostname

我的node.js应用程序使用req.hostname为了redirect一些页面从HTTP到HTTPS是这样的:

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

在localhost上运行应用程序时,这会很好地工作。 但是,当应用程序在mod_proxy后面的服务器上运行时,则req.hostname不包含域名。 相反,它只包含localhost 。 我如何获得域名?

在你的Apache设置你必须添加这个:

 ProxyPreserveHost On 

这将告诉apache在做代理传递给你的节点应用程序时保留一个主机名