如何在同一個 url 上同時配置 apache 和 tomcat?
假設我有一個註冊的 URL
mywebsite.com
指向我的伺服器,它有一個公共 IP 地址。我想同時執行 tomcat 和 apache 來服務頁面(即,apache 上的一些靜態頁面和 tomcat 上的一些動態頁面,如 jsp 等……)。
為了簡單起見,我們假設 apache 在 80 上監聽,tomcat 在 8080 上監聽。
我聽說過
mod_proxy
。是否可以請求mywebsite.com
去 apache 和mywebsite/loggedin
去 tomcat?如果是,應該如何配置以及在哪裡配置?謝謝。
我建議使用
mod_jk
–it 往往比 更具體mod_proxy
,更容易調試。您可以轉發上下文。即,如果我有webapp1
並webapp2
在 Tomcat 上執行,並且我images
在 Apache 上有一個目錄,這將起作用:<VirtualHost *:80> ... JKMount /webapp1/* ajp13 JKMount /webapp2/* ajp13 Alias /images "/some/local/dir" </VirtualHost>
這也更容易配置,並且大多數發行版已經在其本地包管理器中包含包。希望這可以幫助!
mod_proxy 與 tomcat 配合得很好。通過 mod_proxy 代理到 tomcat 有 2 種方法。
- http - 所以 tomcat 作為 http 伺服器執行,apache 通過 HTTP 與 tomcat 對話
- mod_proxy_ajp - 這使用 ajp 協議(也被 mod_jk 使用)。在這種情況下,apache 通過具有更好性能的二進制協議與 tomcat 對話。
mod_proxy_ajp 是 apache 自帶的一個包,而 mod_jk 需要下載和編譯。但是 mod_jk 通常會先獲得新功能,並且有更多選擇。如果您的設置並不復雜…… mod_proxy_ajp 是要走的路。在這種情況下,在 Tomcat 中,您需要將 tomcat 配置為具有 AJP 連接器。而且您不需要 server.xml 中的 http 連接器。對於 apache,指令可能像這樣簡單:
ProxyPass / 登錄 ajp: //127.0.0.2: 8009 / 登錄
帶有 ajp 範例的代理文件在這裡:http ://httpd.apache.org/docs/2.2/mod/mod_proxy.html