我想通过常规网站 URL(例如)运行 Tomcat 应用程序www.xyz.com
。我希望此域的根目录充当 Web 应用程序的基目录,因此每个请求都www.xyz.com/a/b/c
变为www.abc.com:8080/myApp/a/b/c
。理想情况下,我可以透明地执行此操作,并且只针对某些 Web 应用程序执行此操作。
www.abc.com:8080
仍应响应请求。
我需要做什么才能实现这一点?
答案1
ProxyPass / http://www.abc.com:8080/myApp/
ProxyPassReverse / http://www.abc.com:8080/myApp/
阅读更多内容mod_proxy
答案2
更简单的方法是在 Apache conf 文件中添加虚拟主机条目。通常位于 /etc/httpd/conf,在虚拟主机部分末尾添加如下内容:
<VirtualHost X.X.X.X:80>
ServerName tomcatpage.yourdomain.com
ServerAlias tomcatpage.yourdomain.com
Redirect permanent / http://tomcatpage.yourdomain.com:8080/
</VirtualHost>
重新启动 Apache 服务,您就完成了。
答案3
您可以使用 Apache 中的 mod_rewrite 来执行此操作。在 Apache 中加载 mod_rewrite,并在 www.xyz.com vhost 中添加以下规则:
RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1
这应该会产生神奇的效果。
有关 mod_rewrite 的更多信息这里。
编辑:为了在浏览器中保留站点名称,也可以使用 mod_proxy,只需在 RewriteRule 末尾附加一个 [P] 即可:
RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1 [P]
这将强制 Apache 充当该 URL 的代理,而不仅仅是重写 URL。