仅当端口在主机中时代理通过 Apache

Proxypass Apache only if port in host

我有一个节点应用程序在端口 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 显示在我的浏览器中。这就是为什么我放一个 javascript 来改变 window.location 如果 URL...

中有“1234”

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

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

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

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

  3. 修改现有的ProxyPassurl去1235端口