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

Tomcat 移除專案名與端口號:直接用 IP 訪問配置詳解

     編輯:Java 綜合教學

目標

將 https://10.10.153.86:8080/projectName 簡化為 https://10.10.153.86/

步驟 1:修改端口 8080 → 80

編輯 $CATALINA_HOME/conf/server.xml

<!-- 修改前 -->
<Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="40000"
    redirectPort="8443" 
    enableLookups="false"
    minProcessors="10" maxProcessors="1024" acceptCount="1024" />

<!-- 修改後 -->
<Connector port="80" protocol="HTTP/1.1"
    connectionTimeout="40000"
    redirectPort="8443"
    enableLookups="false"
    minProcessors="10" maxProcessors="1024" acceptCount="1024" />

注意:Linux 端口 < 1024 需 root 權限,或用 `authbind`/`setcap` 提權

步驟 2:移除專案名稱 (配置 Root Context)

在同檔案 `` 標籤內新增:

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
    <!-- 新增:空路徑映射到專案 -->
    <Context path="" docBase="projectName" debug="0" reloadable="true"/>
    
    <Valve className="org.apache.catalina.valves.AccessLogValve" ... />
</Host>

關鍵屬性:

  • path="":根路徑 (空字串)
  • docBase="projectName":專案目錄名 (webapps 下) 或 WAR 檔名
  • reloadable="true":開發模式熱重載

步驟 3:清理工作目錄並重啟

# 清除編譯緩存
rm -rf $CATALINA_HOME/work/Catalina/localhost/*

# 重啟 Tomcat
$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh

驗證

curl https://10.10.153.86/
# 應直接返回專案首頁

替代方案對比

方案優點缺點適用場景
server.xml Context path=""簡單、Tomcat 原生單實例僅支援一個根應用單應用部署
Nginx 反向代理 + rewrite多應用、靈活、靜態資源分離需額外維護 Nginx生產環境、多應用
專案打包為 ROOT.war零配置、Tomcat 預設行為需重新打包、版本管理麻煩簡單部署
Docker 映射端口 80:8080容器化、隔離、可移植需 Docker 環境雲原生部署

Nginx 反向代理配置範例 (生產推薦)

server {
    listen 80;
    server_name 10.10.153.86;
    
    location / {
        proxy_pass https://127.0.0.1:8080/projectName/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    
    # 靜態資源直接由 Nginx 服務
    location /static/ {
        alias /opt/tomcat/webapps/projectName/static/;
        expires 30d;
    }
}

常見問題

  1. 端口 80 權限不足:`setcap 'cap_net_bind_service=+ep' /path/to/java` 或用 Nginx 監聽 80 轉發 8080
  2. 多專案衝突:只能有一個 `path=""`,其他專案需用 Nginx 路徑分發
  3. 靜態資源 404:檢查 `docBase` 路徑、專案內 `webapp` 目錄結構
  4. Session 丟失:Nginx 代理需配置 `proxy_cookie_path` 或 Tomcat `sessionCookiePath="/"`

總結

最簡單方式:修改 server.xml port=80 + Context path=""。生產環境建議:**Nginx 監聽 80/443 反向代理 Tomcat 8080**,實現靜態資源分離、多應用路由、SSL 終結、負載均衡等企業級功能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved