【发布时间】:2014-03-18 08:43:00
【问题描述】:
我有一个 node express 应用程序在代理后面运行,使用 Apache ProxyPass(在 httpd.conf 中配置):
ProxyPass /nodeapp http://localhost:9009
我的应用程序使用 Passport 对用户进行身份验证,因此当我访问基本路径时,我应该被重定向到登录页面:
-- 旧重定向:http://example.com:9009 --> http://example.com:9009/login
-- 新重定向:http://example.com/nodeapp --> http://example.com/nodeapp/login
很遗憾,重定向不起作用:
-- 损坏的重定向:http://example.com/nodeapp --> http://example.com/login
我曾尝试在 express 中启用代理配置,但这并没有什么区别:
app.enable('trust proxy');
** 编辑:** 正如 Ethan 在下面的 cmets 中所建议的那样,我可以硬编码我的所有路径以适应新环境,但是当在我的本地计算机上以根 ('/') 运行时,这会破坏路径。
我正在寻找一个更集中的解决方案,如果可能的话,可以适应不同的运行时环境?
【问题讨论】:
-
您似乎没有重定向到正确的页面。您的新应用植根于
/nodeapp,但您正尝试重定向到/login。在 Passport 中,您可以提供successRedirect和failureRedirect路径...您需要以/nodeapp开头的路径。 -
感谢 Ethan,在远程服务器上使用我的应用程序时,您的解决方案对我有用。但是,当在我的本地机器上运行应用程序时,当然路径现在不正确。我正在寻找可以适应不同运行时环境的更集中的解决方案?
标签: node.js express apache2 reverse-proxy passport.js