我需要将所有apache请求重定向到8080端口的tomcat,除了一个路径。
因此,如果我收到如下网址:http://example.com/anything --> tomcat:8080。
但是,如果网址是这个:http://example.com/site --> apache应该提供服务,并且不需要重定向。
目前,文件夹名为
这是我当前的配置文件: site.conf (此文件仅包含以下内容,并位于conf.d文件夹中)
事情是这样的,根网站正在Tomcat上运行,但另一个网站在Apache上运行(在这个问题中我称之为“网站”)。
如果有人能帮忙,我会非常感激。
谢谢!
更新1-09/06/2017
如果我删除
因此,如果我收到如下网址:http://example.com/anything --> tomcat:8080。
但是,如果网址是这个:http://example.com/site --> apache应该提供服务,并且不需要重定向。
目前,文件夹名为
site
在/var/www/html/
中。这是我当前的配置文件: site.conf (此文件仅包含以下内容,并位于conf.d文件夹中)
<LocationMatch "/*">
Allow from all
ProxyPass /site !
ProxyPass http://127.0.0.1:8080
ProxyPassReverse http://127.0.0.1:8080
</LocationMatch>
我认为使用apache实现这个功能很简单,但是我尝试了所有能找到的方法,仍然出现错误:
ProxyPass|ProxyPassMatch can not have a path when defined in a location.
事情是这样的,根网站正在Tomcat上运行,但另一个网站在Apache上运行(在这个问题中我称之为“网站”)。
如果有人能帮忙,我会非常感激。
谢谢!
更新1-09/06/2017
如果我删除
LocationMatch
并将ProxyPass
直接放入.conf
文件中,则可以使其正常工作。ProxyPass /site !
ProxyPassReverse /site !
ProxyPass / http://127.0.0.1:8080
ProxyPassReverse / http://127.0.0.1:8080
但是,我想知道为什么?将这些指令放在LocationMatch
标签外面的影响是什么?最重要的是,为什么我不能使用LocationMatch
来达到相同的结果?
Location
块来设置ProxyPass
,那么在配置文件的顶层使用Location
与仅使用ProxyPass
相比可能没有太大区别。我想,如果您在Location
部分中除了ProxyPass
之外还要做更多事情,那么您可能更喜欢将相关的配置元素放在一起。 - larsks