一個Tomcat支持不同的域名訪問各自不同程序的配置方法

條件是:這樣一種實際情況是,就一臺服務器,當公網的IP地址也只有一個。

應用是:不同的域名訪問後訪問相對應的不同的程序。

舉個例子來說如下:

有一個域名叫www.yuming.com

另一個一名叫bbs.yuming.com

曾經想過部署多個tomcat,然後用不同的端口來對應不用的域名。這樣是很不好的,不可能指望用戶去記住輸入端口號(不是默認的80)。

例如:www.yuming.com,              bbs.yuming.com:8080/

還有就是在一個tomcat下面部署多個應用,然後通過域名+應用名的方式訪問,也不好,不夠簡潔。

例如:www.yuming.com/    (只能隱藏一個工程名)          bbs.yuming.com/bbs或www.yuming.com/bbs

以上兩種方式雖然都做到了形似不同的域名訪問了不同應用,但實際效果還是很不好的,我就想輸入www.yuming.com或bbs.yuming.com就能訪問了。還有就是想過用跳轉的方式等等實現都不是很好。

剛剛試了一下原來是有其他方法的,以前沒注意過,愚昧了。呵呵。

方法是基本只需修改server.xml即可,步驟如下:

在tomcat的conf/server.xml裏面找到如下信息

<Host name="localhost" appBase="webapps"

       unpackWARs="true" autoDeploy="true"

       xmlValidation="false" xmlNamespaceAware="false">

 

將上面的代碼複製,加到此代碼前面,並加上標籤結束符號,如下:

<Host name="localhost" appBase="webapps"

       unpackWARs="true" autoDeploy="true"

       xmlValidation="false" xmlNamespaceAware="false">

</Host>

<Host name="localhost" appBase="webapps"

       unpackWARs="true" autoDeploy="true"

       xmlValidation="false" xmlNamespaceAware="false">

修改上面Host標籤name屬性值,將localhost改爲bbs.yuming.com;修改下面Host標籤name屬性值,將localhost改爲www.yuming.com,修改後如下:

<Host name="bbs.yuming.com" appBase="webapps"

       unpackWARs="true" autoDeploy="true"

       xmlValidation="false" xmlNamespaceAware="false">

</Host>

<Host name="www.yuming.com" appBase="webapps"

       unpackWARs="true" autoDeploy="true"

       xmlValidation="false" xmlNamespaceAware="false">

在tomcat目錄下新建一個叫webapps2的文件夾,將bbs.yuming.com對應的那個Host標籤appBase屬性值爲webapps2,修改後如下:

<Host name="bbs.yuming.com" appBase="webapps2"

       unpackWARs="true" autoDeploy="true"

       xmlValidation="false" xmlNamespaceAware="false">

</Host>

<Host name="www.yuming.com" appBase="webapps"

       unpackWARs="true" autoDeploy="true"

       xmlValidation="false" xmlNamespaceAware="false">

如 此,我們已經做到了不同的域名只能訪問自己對應的那個項目目錄了。當然這樣還沒有完,在webapps或webapps2下面是能發佈項目了,但現在還是 需要輸入域名+項目名。下面再做一下處理,將工程名爲test的項目拷貝到webapps下,將testbbs項目拷貝到webapps2下,在Host 標籤內各增加一個Context上下文標籤,修改後如下:

<Host name="bbs.yuming.com" appBase="webapps2"

       unpackWARs="true" autoDeploy="true"

       xmlValidation="false" xmlNamespaceAware="false">

<Context path="" docBase="test" reloadable="true">

</Context>

</Host>      

<Host name="www.yuming.com" appBase="webapps"

       unpackWARs="true" autoDeploy="true"

       xmlValidation="false" xmlNamespaceAware="false">

<Context path="" docBase="testbbs" reloadable="true">

</Context>

這樣做啓動tomcat會發現,每個項目被髮布了兩遍。一遍是帶工程名的,一遍是不帶工程名的。要只發布一次的話,就將項目放在webapps和webapps2文件夾外的任意目錄。通過配置指向發佈,如下:

例如放在D:\project\test和D:\project\testbbs,最終修改配置後如下:

<Host name="bbs.yuming.com" appBase="webapps2"

       unpackWARs="true" autoDeploy="true"

       xmlValidation="false" xmlNamespaceAware="false">

<Context path="" docBase="D:\\project\\test" reloadable="true">

</Context>

</Host>      

<Host name="www.yuming.com" appBase="webapps"

       unpackWARs="true" autoDeploy="true"

       xmlValidation="false" xmlNamespaceAware="false">

<Context path="" docBase="D:\\project\\testbbs" reloadable="true">

</Context>

重新啓動tomcat即可。如果想測試看看效果的話,可以在配置本地的hosts例如:

打開C:\WINDOWS\system32\drivers\etc\hosts  ,編輯如下:

127.0.0.1       localhost

192.168.1.11 bbs.yuming.com

192.168.1.11 www.yuming.com

好了,在瀏覽器裏面輸入www.yuming.com或bbs.yuming.com就能訪問各自的工程了。



本文標籤

轉載請保留鏈接: http://www.rguess.com/blog/article/76.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章