【发布时间】:2018-02-12 05:20:43
【问题描述】:
我必须将 80 上的所有 apache 请求重定向到 8080 上的 tomcat,除了一个路径。
所以,如果收到http://example.com/anything --> tomcat:8080。
但是,如果 url 是:http://example.com/site --> apache 应该服务并且不需要重定向。
目前,/var/www/html/ 内有一个名为site 的文件夹。
这是我当前的配置文件:
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上运行(我在这个问题中称为site)。
如果有人可以提供帮助,我将不胜感激。
谢谢!
更新 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 完成相同的结果?
【问题讨论】: