首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Tomcat 修改預設端口完整指南:避免多實例衝突

     編輯:Java 相關知識

背景

Tomcat 預設使用 8080 作為 HTTP 連接器端口。在同一台伺服器部署多個 Tomcat 實例,或與其他服務(如 Nginx、Jenkins)共存時,必須修改端口以避免衝突。

核心配置文件:server.xml

位於 $CATALINA_HOME/conf/server.xml,包含三個關鍵端口定義,全部必須修改才能實現多實例共存:

1. HTTP 連接器端口(預設 8080)

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

修改 port 為未被佔用的端口,如 8081、8082 等。

2. AJP 連接器端口(預設 8009)

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

用於 Apache httpd / Nginx 反向代理通訊,同樣需修改,如 8010、8011。

3. 關閉指令端口(預設 8005)

<Server port="8005" shutdown="SHUTDOWN">

Tomcat 關閉腳本(shutdown.sh)通過此端口發送關閉指令,必須修改,如 8006、8007。

完整修改示例(第二個實例)

<Server port="8006" shutdown="SHUTDOWN">
  ...
  <Connector port="8081" protocol="HTTP/1.1"
             connectionTimeout="20000"
             redirectPort="8444" />
  <Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />
  ...
</Server>

注意:redirectPort(HTTPS 重導向端口)建議同步修改,避免多實例共用同一 SSL 端口產生衝突。

驗證與排障

  1. 修改後啟動 Tomcat,觀察啟動日誌 catalina.out 或 localhost.yyyy-mm-dd.log,確認無 BindException: Address already in use 錯誤。
  2. 使用 netstat -an | grep LISTEN 或 ss -lntp 驗證端口監聽狀態。
  3. 若仍報錯,根據錯誤提示的端口號逐一排查並修改(如 JMX/RMI 端口、JPDA 調試端口等)。

生產環境建議

  • 為每個實例建立獨立的 CATALINA_BASE 目錄結構(conf、logs、webapps、work、temp),共用 CATALINA_HOME 二進制文件,便於維護升級。
  • 使用系統服務或 Docker 容器化管理多實例,避免手動腳本啟動帶來的環境變數混亂。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved