【问题标题】:Proxypass Apache only if port in hostProxypass Apache 仅当端口在主机中时
【发布时间】:2017-12-26 05:44:35
【问题描述】:

我有一个节点应用程序在端口 1234 上运行。因为我不希望端口号显示在任何地方,我的 Apache 中有一个 ProxyPass 规则:

<VirtualHost *:80>
  ProxyPass /node http://example.com:1234
  ProxyPassReverse /node http://example.com:1234
</VirtualHost>

它运行良好:当我在浏览器中输入http://example.com/node 时,会显示预期的页面。 当我也输入http://example.com:1234 时,但我不希望该 URL 显示在我的浏览器中。这就是为什么如果 URL 中有“1234”,我会放置一个 javascript 来更改 window.location ...

这不是一个好的解决方案,因为页面必须在被重定向之前加载,并且用户会看到端口号。我想知道是否可以使用 Apache 规则立即将 example.com:1234 重定向到 example.com/node。我搜索了所有文档,但解决方案并不明显......

【问题讨论】:

  • 您应该做的是将您的节点应用程序设置为在 127.0.0.1 上侦听,这样example.com:1234从本地主机工作 - 即它对网站的任何外部访问者
  • 是的,我明白了,但我没有提到用户在通过 SSO 登录后来到我的应用程序,SSO 将用户重定向到“:1234”主机。我无法改变这一点,因为我没有 SSO 的权限。
  • 将节点应用移动到另一个端口;使用Redirect / http://example.com/ 拥有另一个虚拟主机(*:1234
  • 如果我这样做,当我启动我的节点应用程序时,它说端口已经在使用中。 :(
  • 实际上@DusanBajic 你的答案是正确的。你能把它发布出来让我投票给你吗?

标签: node.js apache proxypass


【解决方案1】:

如果您无法更改 SSO 重定向 URL,我建议如下:

  1. 在不同的端口(例如 1235)上运行您的应用程序

  2. 在端口 1234 上创建一个额外的 VirtualHost,并使用它来重定向到 :80,Redirect / http://example.com/

  3. 修改您现有的 ProxyPass url 以转到端口 1235

【讨论】:

  • 对于那些面临同样问题的人来说更准确地说,我的节点应用程序在端口 1234 上运行,并且 *:1234 VirtualHost 只有一个规则:redirect / example.com/node,proxypass 保持不变*:80,但你的评论对我帮助很大!
猜你喜欢
  • 2021-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-13
  • 1970-01-01
  • 2014-07-17
  • 1970-01-01
  • 2012-05-01
相关资源
最近更新 更多