我必須將80上的所有apache請求重定向到8080上的tomcat,除了一個路徑。Apache ProxyPass錯誤
所以,如果收到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上(我在這個問題中調用了站點)。
如果有人可以幫忙,我很感激。
謝謝!
更新1 - 2017年9月6日
我得到它,如果我刪除LocationMatch
,把ProxyPass
直接在.conf
文件工作:
ProxyPass /site !
ProxyPassReverse /site !
ProxyPass /http://127.0.0.1:8080
ProxyPassReverse /http://127.0.0.1:8080
不過,我會想知道,爲什麼呢?將此指令放在LocationMatch
標籤之外的影響是什麼?而且,最重要的是,爲什麼我不能使用LocationMatch
完成相同的結果?
好吧,我明白了。謝謝!我會使用'Location'來嘗試你的解決方案。但是,通過不使用「位置」,有什麼區別?在文件中直接設置這些代理值與「VirtualHost」本身或「Directory」的設置相同?這種方法有什麼問題? – Luiz
如果只使用'Location'塊來設置'ProxyPass',我不確定使用'Location'與使用配置文件頂層的'ProxyPass'有很大區別。我猜如果你在'Location'部分做的不僅僅是'ProxyPass',你可能更願意將相關的配置元素放在一起。 – larsks