tomcat多域名配置

TOMCAT的域名配置

如今不少的公司的網站都是用tomcat做爲應用服務區的,但是對於初學者,8080端口號是如何去掉的,這些網站是如何和域名綁定到一塊兒的呢?一個

tomcat是如何綁定多域名?而且這些域名是如何對應不一樣的項目呢?並且個人服務器沒放在機房,放在個人本地,我應該如何把個人服務器給映射到外

網?這一系列的問題,今天就這個問題,我來講一下。
1. 域名。如今的域名不是很貴,有不少人都有,而咱們註冊域名的網站也會有一個DNS助解析,就是把服務器的IP綁定到這些域名上。
2. 咱們域名有了,如今就來講說咱們的項目;好比說我如今有兩個項目都在個人這個tomcat下面。那咱們輸入http://localhost:8080 /abc就能夠訪問

到咱們abc這個項目了,可是端口號8080如何去掉呢?在tomcat的conf文件夾下有一個server.xml。咱們打開這個文件,找到8080,只須要把8080改爲80

便可。當咱們再次輸入http://localhost/abc便可。
3. 但是咱們的域名如何跟項目綁定到一塊兒呢?咱們再次找到tomcat下面的conf文件夾裏面的server.xml。修改<Host name="咱們所要綁定的域名"

debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"></Host>
4. 當啓動tomcat的時候,輸入咱們綁定的域名,是否是看到了咱們的tomcat。但是咱們想訪問咱們的項目還得再域名後面加上項目名稱才能訪問到,也

就是說到如今咱們的域名還沒跟項目綁定到一塊兒。咱們在看一下第三部,想讓咱們的項目和域名綁定到一塊兒,咱們只須要在</Host>前面加上<Context

docBase="項目名" path=""  reloadable="true" >便可。
例如:<Host name="www.abc.com" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false"

xmlNamespaceAware="false"><Context docBase="baidu" path=""  reloadable="true" ></Host>
5. 當咱們的有兩個項目都放在同一個tomcat下的時候,咱們只須要把<Host></ Host>加上兩個既能夠完成咱們的2個項目的綁定,可是項目名稱別忘了

改哦。
6. 當咱們的服務器本身維護(沒有放在機房),咱們須要對咱們的路由作一下映射。就拿個人路由來舉例。個人路由是TP-LINK WR340G型號,進入路由

後,咱們能找到一個轉發規則,那裏面有一個虛擬服務器的這項,點擊新增條目之後會有:服務端口號、IP地址、協議、狀態、經常使用服務端口號。咱們

只需在這裏IP地址(服務器的局域網IP),協議選擇ALL(有的路由好像沒有這項,那就不須要填寫了),狀態選擇生效,經常使用服務端口號選擇HTTP或者

WEB便可。這時默認的端口號爲80。當經常使用服務端口號沒有HTTP或者WEB這項時,能夠選擇DNS,而後手動把端口號改爲80。點擊生效。保存便可。若是說

本人說的路由映射對您不適用或者沒有看明白,能夠上網找各類路由的映射方法。
7. 這個時候咱們在輸入咱們的域名,是否是就直接訪問到咱們的項目了。

----------------------------------------------------------------

域名綁定與虛擬目錄設置:

server.xml 的修改方式以下:

(一)多域名綁定

1.若是你要綁定網站,首先是要把tomcat的默認訪問端口8080,修改爲80

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

修改後:
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

其實這裏就是把port:8080,修改爲port:80就能夠了,其餘的參數不變

2.接下來就是重點了哈哈...

單個域名綁定:
原始:
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false" />
</Engine>
固然這裏我把註釋代碼通通刪除掉了,省的礙眼


修改後:
<Host name="chengqun.202.71one.com" debug="0" appBase="d:/wwwroot/chengqun"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/" docBase="d:/wwwroot/chengqun"></Context>
</Host>


<Host name="chengqun1.202.71one.com" debug="0" appBase="d:/wwwroot/chengqun1"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/" docBase="d:/wwwroot/chengqun1"></Context>
</Host>

多域名綁定:

<Host name="chengqun.202.71one.com" debug="0" appBase="d:/wwwroot/chengqun"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>chengqun.202.71one.com</Alias>
<Alias>chengqun1.202.71one.com</Alias>
<Alias>chengqun2.202.71one.com</Alias>
<Context path="/" docBase="d:/wwwroot/chengqun"></Context>
</Host>

這裏面的參數還有不少,我也不是很清楚,不過這樣作確實能夠實現多域名綁定哈哈.並且網站頁面修改了只要直接覆蓋就能夠了,tomcat能夠自動更新類

和頁面,固然若是修改了web.xml或lib,則須要重啓tomcat才能夠.


(二)虛擬目錄
(1)
<Host name="chengqun.202.71one.com" debug="0" appBase="d:/wwwroot/chengqun"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/chengqun" docBase="d:/wwwroot/chengqun"></Context>
</Host>
其中,Host標記是用來配置虛擬主機的,就是能夠多個域名指向一個tomcat,格式只要參考默認的就

能夠了。

<context>是Host標記的子元素吧,表示一個虛擬目錄,它主要有兩個屬性,path就至關於虛擬目錄名字,

而 docbase則是具體的文件位置。在這裏個人虛擬路徑名稱爲chengqun,實際上個人程序也就是html、jsp、servlet都 放在了d:/wwwroot/chengqun這

個目錄下了。

這樣我就能夠經過 chengqun.202. com/chengqun 訪問個人這個虛擬目錄了。

另一種方法是:

<Host name="chengqun.202. com" debug="0" appBase="d:/wwwroot/chengqun"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/" docBase="d:/wwwroot/chengqun"></Context>
</Host>

這樣設置之後,輸入域名能夠訪問這個站點程序了(Context path="/"這裏不一樣)

(2)
沒有指定默認站點,因此直接輸入IP的時候,沒法訪問。如何讓輸入ip就能夠訪問指定的站點呢?
修改server.xml的 <Engine name="Catalina" defaultHost="chengqun.202. com">
這樣就能夠實現了輸入ip訪問chengqun.202. com這個站點的程序了!

----------------------------------------

tomcat下的配置都在conf下的server.xml下實現。。。
裏面從高到低分爲:
Server
--Service
--Connector
--Engine
--Host
--Context

首先把通信接口下的PORT改成80,這樣就不用在瀏覽器中輸入端口號了,如:


<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector
port="80"               maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
HOST表明虛擬主機:
默認有

<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
因此咱們平時都是直接輸入http://localhost:端口號/項目名   就行了。。
假如我如今有個項目在E盤下的workspace目錄,項目名爲LZW
我不想部署在tomcat下的webapp目錄下,而是直接想在TOMCAT下加載這個項目
而且用個域名(www.pw88.com)來映射。這樣咱們能夠加上下面這段代碼


<Host name="www.pw88com" appBase="e:/workspace/LZW
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="WebRoot" debug="0" reloadable="true" crossContext="true" />
</Host>
appBase爲項目的絕對路徑,docBase爲WEB目錄

假如我如今的圖片都放在d:/ext.lzw.com/img下,我想用個二級域名
(img.lzw.com)映射它,假如在d:/ext.lzw.com/img下放入一張圖片1.jpg,咱們就
能夠輸入img.lzw.com/1.jpg來訪問它了。。加上下面代碼就能夠實現了。。


<Host name="img.lzw.com" appBase="d:/ext.lzw.com/img"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="" debug="0" reloadable="true" crossContext="true" />
</Host>
最終咱們要在本地訪問域名,還得修改相愛HOST文件。。打開
C:/WINDOWS/system32/drivers/etc/hosts
加上

127.0.0.1       www.pw88.com
127.0.0.1       img.lzw.com

對tomcat下配置 一ip對多域名的方法詳細以下,按下面配置必定能成功,通過測試了.

<Host name="localhost" debug="0" appBase="D:/Tomcat 5.0/webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>localhost.com</Alias>
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix=".txt"
timestamp="true"/>
<Context path="" docBase="D:/Tomcat 5.0/webapps/gg" reloadable="true" caseSensitive="false" debug="0"></Context>
</Host>

<Host name="one.localhost" debug="0" appBase="D:/Tomcat 5.0/webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>one.localhost.com</Alias>
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix=".txt"
timestamp="true"/>
<Context path="" docBase="D:/Tomcat 5.0/webapps/kk/a" reloadable="true" caseSensitive="false" debug="0"></Context>
</Host>

<Host name="two.localhost" debug="0" appBase="D:/Tomcat 5.0/webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>two.localhost.com</Alias>
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix=".txt"
timestamp="true"/>
<Context path="" docBase="D:/Tomcat 5.0/webapps/kk/b" reloadable="true" caseSensitive="false" debug="0"></Context>
</Host>

因無域名解析服務器,因此在hosts上配,來模擬dns解析.

10.1.1.241 localhost 指向gg文件夾
10.1.1.241 localhost.com 指向gg文件夾
10.1.1.241 one.localhost 指向a文件夾
10.1.1.241 one.localhost.com 指向a文件夾
10.1.1.241 two.localhost 指向b文件夾
10.1.1.241 two.localhost.com 指向b文件夾

通過多方面嘗試,終於在tomcat下配置成功了.html

相關文章
相關標籤/搜索