我已经在 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>