Tomcat虛擬主機配置詳解:Centos環境下多域名部署(詳細教程!)

🏡作者主頁:點擊!?

Tomcat服務器📝專欄:點擊!

🐧Linux高級管理防護和群集專欄:點擊!

??創作時間:2025年3月18日14點14分


最近在折騰 Tomcat 的時候,遇到了一個需求:需要在一臺服務器上跑多個網站,每個網站用不同的域名訪問。乍一看,這不就是虛擬主機的活兒嘛!但對 Tomcat 的虛擬主機配置不太熟,查了不少資料,踩了幾個坑,終于搞定了。于是就想著把整個過程整理下來,分享給有類似需求的小伙伴,希望能少走彎路。

這篇文章主要講的是在 CentOS 系統上,如何一步步配置 Tomcat 的虛擬主機。內容很簡單,從目錄準備到配置文件修改,再到重啟和測試,手把手帶你搞定。

1. 準備虛擬主機的目錄和內容

為每個虛擬主機創建獨立的目錄,并放置測試文件。

創建目錄
mkdir -p /var/www/site1
mkdir -p /var/www/site2
添加測試文件
echo "Welcome to Site 1" > /var/www/site1/index.html
echo "Welcome to Site 2" > /var/www/site2/index.html

2. 修改 Tomcat 的 server.xml 配置文件

編輯 Tomcat 的 server.xml 文件:

vim $CATALINA_HOME/conf/server.xml

找到 <Engine> 標簽(通常在 <Service name="Catalina"> 下),并在其中添加兩個 <Host> 配置塊。

修改后的配置示例:

<Engine name="Catalina" defaultHost="localhost"><!-- 默認的 localhost 配置 --><Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"><Context path="" docBase="${catalina.home}/webapps/ROOT" /></Host><!-- 虛擬主機 1 --><Host name="www.site1.com" appBase="" unpackWARs="true" autoDeploy="true"><Context path="" docBase="/var/www/site1" /></Host><!-- 虛擬主機 2 --><Host name="www.site2.com" appBase="" unpackWARs="true" autoDeploy="true"><Context path="" docBase="/var/www/site2" /></Host></Engine>
配置說明
  • name:虛擬主機的域名,例如 www.site1.comwww.site2.com
  • appBase:設置為空字符串 "",因為我們直接指定了 docBase。 對應應用部署的目錄
  • docBase:虛擬主機的文檔根目錄,分別為 /var/www/site1/var/www/site2
  • path:設置為 "",表示虛擬主機的根路徑(/)。

補充說明:Engine節點 是核心組件之一 用于管理虛擬主機 下面可以定義多個host節點


訪問測試


4. 重啟 Tomcat

重新啟動 Tomcat 以應用新的配置:

$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh

5. 測試虛擬主機

在瀏覽器中訪問以下地址:

訪問 http://www.site1.com:8080,應顯示 Welcome to Site 1

訪問 http://www.site2.com:8080,應顯示 Welcome to Site 2


注意事項

  1. 防火墻配置 如果您的 Tomcat 運行在非默認端口(如 80),需要確保防火墻允許該端口的流量。
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
  1. DNS 配置 如果在生產環境中使用,需要在 DNS 服務器中配置 www.site1.comwww.site2.com 的域名解析到服務器的公網 IP。
  2. 生產環境建議
    • 使用 Apache 或 Nginx 作為反向代理,將域名請求轉發到 Tomcat 的虛擬主機配置 HTTPS 以保證安全性。

總結

搞定之后回頭看,其實配置 Tomcat 虛擬主機并不難,關鍵是要細心,別漏掉小細節。比如:

  • 目錄路徑:一定要確認 docBase 指向的目錄存在,并且權限設置正確。
  • 防火墻:別忘了開放 Tomcat 的端口,不然你本地測得好好的,外網卻訪問不了。
  • DNS 配置:如果是線上環境,域名解析必須指向服務器的公網 IP。
  • 安全性:生產環境建議用 Nginx 或 Apache 做反向代理,別直接暴露 Tomcat,順便把 HTTPS 配置上。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/74109.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/74109.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/74109.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

鴻蒙開發工程師簡歷項目撰寫全攻略

一、項目結構的黃金法則 建議采用「41」結構&#xff1a; 項目背景&#xff08;業務價值&#xff09;技術架構&#xff08;鴻蒙特性&#xff09;核心實現&#xff08;技術難點&#xff09;個人貢獻&#xff08;量化成果&#xff09;附加價值&#xff08;延伸影響&#xff09; …

dfs刷題排列問題 + 子集問題 + 組和問題總結

文章目錄 一、排列問題全排列II題解代碼 優美的排列題解代碼 二、子集問題字母大小寫全排列題解代碼 找出所有子集的異或總和再求和題解代碼 三、組合問題電話號碼的字母組合題解代碼 括號生成題解代碼 組合題解代碼 目標和題解代碼 組合總和題解代碼 總結 一、排列問題 全排列…

【Linux】VMware17 安裝 Ubuntu24.04 虛擬機

目錄 安裝教程 一、下載 Ubuntu 桌面版iso映像 二、安裝 VMware 三、安裝 Ubuntu 桌面版 VMware 創建虛擬機 掛載 Ubuntu ISO 安裝 Ubuntu 系統 安裝教程 一、下載 Ubuntu 桌面版iso映像 鏈接來自 清華大學開源軟件鏡像站 ISO文件地址&#xff1a;ubuntu-24.04.2-des…

CVPR2025 | 對抗樣本智能安全方向論文匯總 | 持續更新中~

匯總結果來源&#xff1a;CVPR 2025 Accepted Papers 若文中出現的 論文鏈接 和 GitHub鏈接 點不開&#xff0c;則說明還未公布&#xff0c;在公布后筆者會及時添加. 若筆者未及時添加&#xff0c;歡迎讀者告知. 文章根據題目關鍵詞搜索&#xff0c;可能會有遺漏. 若筆者出現…

PostgreSQL_數據回退,數據庫導出、導入

目錄 前置&#xff1a; 1 數據回退 1.1 代碼 1.2 pgAdmin4 中查看 1&#xff09;t_daily 2) t_stock_daily 2 數據庫導出、導入 前置&#xff1a; 本博文是一個系列。在本人“數據庫專欄”-》“PostgreSQL_”開頭的博文。 1 數據回退 上一節“PostgreSQL_數據下載并…

golang單機鎖實現

1、鎖的概念引入 首先&#xff0c;為什么需要鎖&#xff1f; 在并發編程中&#xff0c;多個線程或進程可能同時訪問和修改同一個共享資源&#xff08;例如變量、數據結構、文件&#xff09;等&#xff0c;若不引入合適的同步機制&#xff0c;會引發以下問題&#xff1a; 數據競…

【HarmonyOS Next】鴻蒙應用實現彈框DialogHub詳解

【HarmonyOS Next】鴻蒙應用實現彈框DialogHub詳解 一、前言 鴻蒙中實現彈框目前官方提供openCustomDialog和CustomDialog兩種模式。推薦前者&#xff0c;詳情見下圖和官網文檔鏈接&#xff1a; https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V14/arkts-u…

機器學習算法實戰——天氣數據分析(主頁有源碼)

?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連? ? ??? 1. 引言 天氣數據分析是氣象學和數據科學交叉領域的一個重要研究方向。隨著大數據技術的發展&#xff0c;氣象數據的采集、存儲和分…

輸電線路專業英語詞匯

輸電線路transmission line 雙回路double circuit 導線conductor 地線ground &#xff08;Earth&#xff09;wire 雙回路耐張塔double-circuit tension towers 直線塔tangent tower 地質Geological 水文Hydrological 塔位坐標Coordinate of Tower Location 轉角塔angle tower 直…

炫酷的3D按鈕效果實現 - CSS3高級特性應用

炫酷的3D按鈕效果實現 - CSS3高級特性應用 這里寫目錄標題 炫酷的3D按鈕效果實現 - CSS3高級特性應用項目介紹核心技術實現1. 基礎結構設計2. 視覺效果實現2.1 背景漸變2.2 立體感營造 3. 交互動效設計3.1 懸停效果3.2 按壓效果 技術要點分析1. 深度層次感2. 動畫過渡3. 性能優…

解決python配置文件類configparser.ConfigParser,插入、讀取數據,自動轉為小寫的問題

配置類 [Section1] Key_AAA Value[Section2] AnotherKey Value默認情況下&#xff0c;ConfigParser會將ini配置文件中的KEY&#xff0c;轉為小寫。 重載后配置類&#xff1a; 繼承類從configparser.ConfigParser改為configparser.RawConfigParser重載方法optionxform&#…

微服務的網關配置

微服務的網關配置 1. 網關路由 1.1 網關 1.1.1 存在問題 單體架構時我們只需要完成一次用戶登錄、身份校驗&#xff0c;就可以在所有業務中獲取到用戶信息。而微服務拆分后&#xff0c;每個微服務都獨立部署&#xff0c;這就存在一些問題&#xff1a;每個微服務都需要編寫身…

【硬核實戰】ETCD+AI智能調度深度整合!從架構設計到調優避坑,手把手教你打造高可用調度系統!

一、核心架構設計&#xff1a;ETCD如何賦能AI調度&#xff1f; &#x1f525; 架構圖&#xff1a; [AI調度引擎] ← 實時數據 → [ETCD集群] ↓ 決策指令 [執行層&#xff08;車輛/物流/交通設備&#xff09;] 核心角色&#xff1a; ETCD&#xff1a;存儲調度策略、節點狀…

區間震蕩指標

區間震蕩指標的邏輯如下&#xff1a; 一、函數注解 1. Summation函數 功能&#xff1a; 計算給定價格序列Price的前Length個數據點的和&#xff0c;或在數據點數量超過Length時&#xff0c;計算滾動窗口內的價格和。 參數&#xff1a; Price(1)&#xff1a;價格序列&#…

C語言-數組指針和指針數組

指針 數組指針與指針數組 數組指針 定義 概念&#xff1a;數組指針是指向數組的指針&#xff0c;本質上還是指針 特點&#xff1a; ①先有數組&#xff0c;后有指針 ②它指向的是一個完整的數組 一維數組指針 語法&#xff1a; 數據類型 (*指針變量名)[容量]; 案例&a…

31天Python入門——第5天:循環那些事兒

你好&#xff0c;我是安然無虞。 文章目錄 1. while循環1.1 while循環的嵌套1.2 補充學習:print函數 2. for循環2.1 range函數2.2 for循環2.3 continue和break以及return2.4 for循環的嵌套 3. 補充學習3.1 enumerate函數3.2 zip函數3.3 不要在遍歷列表的過程中刪除元素 循環 是…

T3 出行:網約車全棧分布式數據庫升級實踐

現今&#xff0c;網約車已成為民眾日常出行不可或缺的選擇。伴隨“互聯網出行”模式的快速推進&#xff0c;龐大的出行數據應運而生&#xff0c;如同構建了城市交通系統的數字神經脈絡。與此同時&#xff0c;對高效數據存儲與深入數據分析的需求也在持續攀升。 T3 出行于2019年…

區塊鏈技術在供應鏈管理中的應用與創新

在當今全球化的商業環境中&#xff0c;供應鏈管理的復雜性與日俱增。從原材料采購到最終產品交付&#xff0c;涉及眾多環節和參與者&#xff0c;信息的透明度、準確性和安全性至關重要。區塊鏈技術的出現&#xff0c;為供應鏈管理帶來了全新的解決方案&#xff0c;正在逐步改變…

藍橋每日打卡--打家劫舍4

#藍橋#JAVA#打家劫舍4 題目描述 沿街有一排連續的房屋。每間房屋內都藏有一定的現金。現在有一位小偷計劃從這些房屋中竊取現金。 由于相鄰的房屋裝有相互連通的防盜系統&#xff0c;所以小偷 不會竊取相鄰的房屋 。 小偷的 竊取能力 定義為他在竊取過程中能從單間房屋中竊…

c#難點整理

1.何為托管代碼&#xff0c;何為非托管代碼 托管代碼就是.net框架下的代碼 非托管代碼&#xff0c;就是非.net框架下的代碼 2.委托的關鍵知識點 將方法作為參數進行傳遞 3.多維數組 4.鋸齒數組 5.多播委托的使用 6.is運算符 相當于邏輯運算符是 7.as 起到轉換的作用 8.可…