Tomcat 與 Apache2 的結合

最近網站因故遷移到 Ubuntu 24.04.4 LTS。

原系統上執行 jsp 的 Resin Server 因系統架構老舊,所以無法在新的系統上執行,所以改由 Tomcat 接手。

  1. 安裝與設定Tomcat
    1. 安裝Tomcat
    2.              sudo apt -y install tomcat10 
                

      以上動作,除了安裝 tomcat 之外,也會自動安裝 openjdk-21-jre-headless

    3. 設定 Tomcat 整體狀況
    4. 找到開啟並編輯以下內容 /etc/tomcat10/server.xml 檔案。

                
                   <Connector port="8080" protocol="HTTP/1.1"
                              connectionTimeout="20000"
                              redirectPort="8443"
                              maxParameterCount="1000"
                              URIEncoding="UTF-8" />
                

       

      說明:

      • 中文參數不亂碼 (URIEncoding=”UTF-8″):
      • 確保網址列傳遞的中文或特殊字元能被正確解析。

      • 標準協定支援 (protocol=”HTTP/1.1″):
      • 明確指定使用 HTTP/1.1 進行通訊。

      • 連線資源保護 (connectionTimeout=”20000″):
      • 超過 20 秒無效連線會自動斷開,避免伺服器資源被卡死。

      • 安全轉址預備 (redirectPort=”8443″):
      • 當需要強制使用 HTTPS 時,能順利將流量導向 8443 埠。

      • 防禦惡意攻擊 (maxParameterCount=”1000″):
      • 限制單次請求的參數數量,保護伺服器不被雜湊碰撞攻擊癱瘓。

       

    5. 設定 Tomcat 檔案根目錄
    6. 指定 jsp 檔案的根目錄,個人習慣將 jsp 檔案整合好後放在 /home/jsp 目錄下。

      以 Ubuntu 設定來說,在 /etc/tomcat10/Catalina/localhost/ 目錄下,新增 ROOT.xml 的檔案。ROOT.xml 檔案內容如下,主要是將 docBase 指向目標路徑。

                   <Context docBase="/home/jsp" reloadable="true"></Context> 
                

       

    7. 設定完成後,重啟 Tomcat 服務
    8.             sudo systemctl restart tomcat10
                

       

  2. 與系統上的 Apache2 進行結合,讓 jsp 程式部份由 Tomcat 執行,php 與 html 靜態網頁部份由 Apache2 執行。
  3. 網站本身架設在 Apache2 上,且 SSL 憑證也已安裝設定完成。所以網站若收到 jsp 程式檔案要求時,就直接轉傳給 tomcat 處理。

    1. 啟用必要的 Apache 模組
    2. sudo a2enmod proxy proxy_http ssl rewrite
      sudo systemctl restart apache2

    3. 設定 Tomcat 轉址設定
    4. sudo touch /etc/apache2/sites-available/tomcat10.conf
      sudo ln -s /etc/apache2/sites-available/tomcat10.conf /etc/apache2/sites-enabled/tomcat10.conf
      sudo vim /etc/apache2/sites-available/tomcat10.conf

      將以下內容寫入 tomcat10.conf 檔案中:

                   # === Tomcat 10 反向代理專屬設定 ===
                   # 將所有 .jsp 請求轉發給 Tomcat
                   ProxyPassMatch "^/(.*\.jsp)$" "http://localhost:8080/$1"
                   ProxyPassReverse "/" "http://localhost:8080/"
                

       

    5. 整合進 ssl 檔案中
    6. 開啟 /etc/apache2/sites-enabled/default-ssl.conf,並將以下設定放入。

                    # 關鍵步驟:把 tomcat10.conf 的規則「引入」到這個主設定裡!
                    Include /etc/apache2/sites-enabled/tomcat10.conf
                

       

    7. 整理各 jsp 網站程式,寫成一個檔案,讓 apache2 可以讀的到。
    8. 將歷來的 jsp 網站程式,列出成一個檔案,例如:jsp_files.conf。

      存放在 /etc/apache2/conf-availabe 目錄內,並做個檔案連結:
      sudo ln -s /etc/apache2/conf-available/jsp_files.conf /etc/apache2/conf-enabled/jsp_files.conf。

    9. 設定網站頁面優先讀取檔案類型順序
    10. 網站頁面會根據因為檔案類型順序不同,而有不同呈現結果。因此理論是 index.php, index.html, index.jsp 這樣的順序。

      sudo vim /etc/apache2/mods-enabled/dir.conf,內容如下:
      DirectoryIndex index.php index.html index.jsp index.cgi index.pl index.xhtml index.htm

    11. 重啟 tomcat 與 apache2 服務
    12. sudo systemctl restart tomcat10
      sudo systemctl restart apache2

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*