将Apache请求(端口80)转发到Tomcat(端口8080)?


8

我想通过常规网站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 仍应响应请求。

我需要怎么做才能做到这一点?

Answers:


14
ProxyPass        / http://www.abc.com:8080/myApp/
ProxyPassReverse / http://www.abc.com:8080/myApp/

阅读有关mod_proxy的更多信息


这是执行此操作的最佳解决方案
Mike 2010年

1
要解决“仅适用于某些Web应用程序”这一方面,只需使重定向路径更深。因此:ProxyPass / a / b / c abc.com:8080/myApp/a/b/c ProxyPassReverse / a / b / c abc.com:8080/myApp/a/b/c 要代理除某些路径以外的所有路径,请离开ProxyPassReverse行,但用RewriteRules替换ProxyPass行(确保使用[P]选项代理而不是重定向),并制定较早的规则以不代理那些路径。重写规则/ notproxied - [L]重写规则/(.*)abc.com:8080/myApps/$1 [P] ProxyPassReverse / abc.com:8080/myApp
杰里米中号

我在哪里添加这些行?
米娜·迈克尔

@MinaMichael mod_proxy文档指出:上下文:服务器配置,虚拟主机,目录
ptman'5

3

一种更简单的方法是在您的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和www.xyz.com虚拟主机中加载mod_rewrite,添加以下规则:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1

这应该做魔术。

有关mod_rewrite的更多信息,请参见此处

编辑:为了将站点名称保留在浏览器中,也可以通过在RewriteRule的末尾附加[P]来使用mod_proxy:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1 [P]

这将迫使Apache充当该URL的代理,而不仅仅是重写URL。


这将导致浏览器实际重定向。这行得通,但是我希望该站点www.xyz.com从用户的角度出现。
Stefan Kendall,2010年

1
也使用mod_proxy,并在RewriteRule的末尾附加[P],如下所示:RewriteRule ^ /(。*)abc.com:8080/myApp/$1 [P]。我还编辑了上面的答案以包含此信息。
Marco Ramos
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.