如何重写 url 来删除端口号?

如何重写 url 来删除端口号?

我已经在 tomcat 上运行了 subsonic 应用程序。其他一切都在 apache 上运行。我不想每次都输入端口号,所以我想设置一个可以访问 subsonic 的简单目录。

因此,我正在尝试在 apache 目录中创建虚拟主机文件。(ubuntu 服务器 12.04)

我尝试了很多变化,但都无法正常工作:

<VirtualHost *:80>

 DocumentRoot /var/www/streamer

  ProxyPass               /       http://mini.local:4040/
  ProxyPassReverse        /       http://mini.local:4040/

</VirtualHost>

答案1

您正在做的事情应该已经奏效了。我确实有类似的设置,其中 tomcat 正在运行 8080,并且我不想要外部 URL(因此最终用户永远不应该知道我在 8080 上运行它)。

因此,我会执行类似于您所做的 proxypass,并且在我的内部 URL 发生更改时使用重定向匹配或重新预测永久。例如,如果我从 http 更改为 https,并且不想更改客户端 API 或其他应用程序上的 URL。

您应该尝试使用 apache 重定向模块。它允许您在不修改外部 URL 的情况下进行内部重定向

例子:

<VirtualHost *:80>
  ServerName test.web.site
  Redirect permanent / http://another.site.port
</VirtualHost>

上面的例子是对您使用 ProxyPass 所做操作的补充。

答案2

您可能需要考虑类似的事情。我已经有一段时间没有使用 Tomcat 了,但我对 node.js 应用程序做了一些非常类似的事情。在我的场景中,文档根由节点负责 - 您的 Tomcat 配置可能也是如此,但您可以进行测试,如果不是,只需根据需要添加 DocumentRoot 命令即可。

<VirtualHost *:80>
    ServerName mini.local
    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
            AddDefaultCharset Off
            Order deny,allow
            Allow from all
    </Proxy>
    ProxyPass / http://mini.local:4040/
    ProxyPassReverse / http://mini.local:4040/
 </VirtualHost>

相关内容