Apache-2.2
反向代理 - 了解代理通行證 - apache mod_proxy
我在我的 linux 伺服器上執行 tomcat,我想為此使用反向代理。在閱讀了 apacha 中 mod_proxy 的手冊後,我並沒有真正理解 proxypass 中的 /path 。
我舉一個小例子。我的 tomcat 的目錄是 /tomcat/webapp。那麼下面的配置正確嗎?:
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com ProxyRequests Off ProxyPass /tomcat/webapp http://127.0.0.1:8080 ProxyPassReverse /tomcat/webapp http://127.0.0.1:8080 </VirtualHost>
我會很感激,我有經驗的人可以幫助我。
從理論上講,無論您選擇哪個
ProxyPass
指令,它都會起作用,即使您選擇代理http://example.com:8080/webapp/
為http://example.com/foo/bar/baz/
.但是,如果您的應用程序在超連結中使用絕對路徑,最好在Apache和Tomcat上使用相同的 URI 路徑,否則您將遇到類似問題的問題。所以:
- 如果您的應用程序編寫得很好,請選擇您喜歡的 URL 並調整 Tomcat 上的 webapp 部署以適應它。
- 如果您的應用程序寫得不好(例如,在這個問題中有一些硬編碼路徑,請調整Apache路徑以適應硬編碼部署路徑。
無論哪種方式,您都應該使用:
ProxyPass "/path/to/webapp/" "http://127.0.0.1:8080/path/to/webapp/"
PS:由於顯然您想在兩個埠上執行 Tomcat,最好告訴 webapp 它正在被代理並且該埠
8443
是通過 SSL 訪問的:<Connector port="8080" proxyName="example.com" proxyPort="80" redirectPort="443" /> <Connector port="8443" proxyName="example.com" proxyPort="443" scheme="https" secure="true" />
所以 webapp 不會產生從 port
8443
到 port的無用重定向443
。