最近網站因故遷移到 Ubuntu 24.04.4 LTS。
原系統上執行 jsp 的 Resin Server 因系統架構老舊,所以無法在新的系統上執行,所以改由 Tomcat 接手。
- 安裝與設定Tomcat
- 安裝Tomcat
- 設定 Tomcat 整體狀況
- 中文參數不亂碼 (URIEncoding=”UTF-8″):
- 標準協定支援 (protocol=”HTTP/1.1″):
- 連線資源保護 (connectionTimeout=”20000″):
- 安全轉址預備 (redirectPort=”8443″):
- 防禦惡意攻擊 (maxParameterCount=”1000″):
- 設定 Tomcat 檔案根目錄
- 設定完成後,重啟 Tomcat 服務
- 與系統上的 Apache2 進行結合,讓 jsp 程式部份由 Tomcat 執行,php 與 html 靜態網頁部份由 Apache2 執行。
- 啟用必要的 Apache 模組
- 設定 Tomcat 轉址設定
- 整合進 ssl 檔案中
- 整理各 jsp 網站程式,寫成一個檔案,讓 apache2 可以讀的到。
- 設定網站頁面優先讀取檔案類型順序
- 重啟 tomcat 與 apache2 服務
sudo apt -y install tomcat10
以上動作,除了安裝 tomcat 之外,也會自動安裝 openjdk-21-jre-headless 。
找到開啟並編輯以下內容 /etc/tomcat10/server.xml 檔案。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
URIEncoding="UTF-8" />
說明:
確保網址列傳遞的中文或特殊字元能被正確解析。
明確指定使用 HTTP/1.1 進行通訊。
超過 20 秒無效連線會自動斷開,避免伺服器資源被卡死。
當需要強制使用 HTTPS 時,能順利將流量導向 8443 埠。
限制單次請求的參數數量,保護伺服器不被雜湊碰撞攻擊癱瘓。
指定 jsp 檔案的根目錄,個人習慣將 jsp 檔案整合好後放在 /home/jsp 目錄下。
以 Ubuntu 設定來說,在 /etc/tomcat10/Catalina/localhost/ 目錄下,新增 ROOT.xml 的檔案。ROOT.xml 檔案內容如下,主要是將 docBase 指向目標路徑。
<Context docBase="/home/jsp" reloadable="true"></Context>
sudo systemctl restart tomcat10
網站本身架設在 Apache2 上,且 SSL 憑證也已安裝設定完成。所以網站若收到 jsp 程式檔案要求時,就直接轉傳給 tomcat 處理。
sudo a2enmod proxy proxy_http ssl rewrite
sudo systemctl restart apache2
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/"
開啟 /etc/apache2/sites-enabled/default-ssl.conf,並將以下設定放入。
# 關鍵步驟:把 tomcat10.conf 的規則「引入」到這個主設定裡!
Include /etc/apache2/sites-enabled/tomcat10.conf
將歷來的 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。
網站頁面會根據因為檔案類型順序不同,而有不同呈現結果。因此理論是 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
sudo systemctl restart tomcat10
sudo systemctl restart apache2