當(dāng)前位置:首頁(yè) >  IDC >  域名 >  正文

Tomcat Web 應(yīng)用綁定域名的幾種方式

 2017-12-06 09:24  來(lái)源: codebelief   我來(lái)投稿 撤稿糾錯(cuò)

  域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過(guò)

當(dāng)我們將應(yīng)用部署到 tomcat 之后,默認(rèn)是通過(guò) 這種形式來(lái)訪問(wèn)的。

很顯然,這只適用于調(diào)試的情況,在實(shí)際使用時(shí),我們通常會(huì)為根據(jù)需要,為應(yīng)用綁定更加便于訪問(wèn)的路徑。

一般來(lái)說(shuō),我們不直接將 tomcat 運(yùn)行在 80 端口,更安全的做法是在 80 端口運(yùn)行一個(gè) http server,然后通過(guò)反向代理轉(zhuǎn)發(fā)到 8080 端口。

以下的幾種方式均基于反向代理實(shí)現(xiàn),需要對(duì)應(yīng)的反向代理服務(wù)程序,這里使用的是 apache,也可以用 nginx 實(shí)現(xiàn),大同小異。

ne

首先,需要確保開(kāi)啟 mod_proxy 模塊:

$ sudo a2enmod proxy

$ sudo a2enmod proxy_http

$ service apache2 restart

通過(guò) 80 端口訪問(wèn)

即通過(guò) 的形式訪問(wèn) web 應(yīng)用。

我們?cè)?80 端口運(yùn)行 apache,由 apache 處理 80 端口的請(qǐng)求,然后將所有請(qǐng)求轉(zhuǎn)發(fā)給運(yùn)行在 8080 端口的 tomcat 處理,這樣就無(wú)需修改 tomcat 的運(yùn)行端口,另一方面也確保了安全性。

在 /etc/apache2/sites-available/ 目錄下添加配置文件 tomcat.conf:

<VirtualHost *:80>

ServerName codebelief.com

ProxyRequests On

ProxyPass /

ProxyPassReverse /

</VirtualHost>

然后將該配置文件通過(guò)軟鏈接放入 /etc/apache2/sites-enabled/ 目錄以啟用該配置。

可以使用以下命令:

$ ln -s tomcat.conf /etc/apache2/sites-enabled/tomcat.conf

也可以使用 apache 自帶的命令:

$ a2ensite tomcat.conf

最后重新加載 apache 配置文件:

$ service apache2 reload

完成。

通過(guò)子域名訪問(wèn)

即通過(guò) 訪問(wèn) web 應(yīng)用。

與上述配置過(guò)程類(lèi)似,依然采用反向代理的方式將子域名請(qǐng)求轉(zhuǎn)發(fā)給 8080 端口。

只需將 tomcat.conf 文件改成:

<VirtualHost *:80>

ServerName codebelief.com

ServerAlias app.codebelief.com

ProxyRequests On

ProxyPass /

ProxyPassReverse /

</VirtualHost>

同樣,將該文件鏈接到 sites-enabled 目錄下,然后 reload 配置即可。

域名根路徑訪問(wèn)應(yīng)用

即直接通過(guò) 的形式訪問(wèn) myapp,而無(wú)需加應(yīng)用所在目錄名。

tomcat.conf 文件內(nèi)容如下,其它步驟一樣。

<VirtualHost *:80>

ServerName codebelief.com

ServerAlias app.codebelief.com

ProxyRequests On

ProxyPass /

ProxyPassReverse /

</VirtualHost>

這樣,就可以通過(guò) 或者 直接訪問(wèn) myapp 了。

使用根路徑直接訪問(wèn)應(yīng)用,還有另一種實(shí)現(xiàn)方式。

這種方式不需要 apache 或 nginx 等反向代理服務(wù)程序,但是如果要使用這種方式,最好是 tomcat 只運(yùn)行單個(gè) web 應(yīng)用,避免一個(gè) web 應(yīng)用的內(nèi)部路徑與其它 web 應(yīng)用的路徑?jīng)_突。

我們這里不考慮端口號(hào)的修改,使用默認(rèn)的 8080 端口。

目標(biāo)是通過(guò) 來(lái)訪問(wèn) myapp。

修改 tomcat/conf/server.xml 文件

在 <Engine> 標(biāo)簽內(nèi)添加下面的主機(jī)配置:

<Host name="codebelief.com" appBase="webapps" unpackWARs="true" autoDeploy="true">

<Alias>app.codebelief.com</Alias>

<Context path="" docBase="myapp" debug="0" privileged="true" />

<Valve className="org.apache.catalina.valves.AccessLogValve"

directory="logs" prefix="localhost_access_log." suffix=".txt"

pattern="%h %l %u %t "%r" %s %b" resolveHosts="false" />

</Host>

Host 標(biāo)簽中的 name 表明該配置用于處理來(lái)自 codebelief.com 主機(jī)的請(qǐng)求。注意,name 必須為一級(jí)域名或 ip 地址。

要使得子域名 app.codebelief.com 也能使用該配置,即根路徑直接訪問(wèn) myapp,那么需要使用 Alias 標(biāo)簽綁定該子域名。

Context 標(biāo)簽內(nèi)的 path="" 表示直接通過(guò)根路徑訪問(wèn),docBase="myapp" 表示根路徑默認(rèn)訪問(wèn)的是 myapp 應(yīng)用。

對(duì)外屏蔽 8080 端口

當(dāng)我們使用不包含端口號(hào)的形式訪問(wèn) myapp 時(shí),我們還可以對(duì)外屏蔽 8080 端口,即必須通過(guò) 80 端口由 apache 轉(zhuǎn)發(fā)給 tomcat。

要使外部不能直接訪問(wèn) 8080 端口,可以在 iptables 中添加對(duì)應(yīng)規(guī)則,有關(guān) iptables 的具體原理和用法,可以自行參考相關(guān)文章。

在這里,只需要執(zhí)行以下命令:

$ iptables -t mangle -A PREROUTING -p tcp --dport 8080 -j DROP

該命令會(huì)在 mangle 表中的 PREROUTING 鏈添加指定規(guī)則,即對(duì)來(lái)自 8080 端口的 tcp 連接,直接做丟棄處理。

這樣就可以禁止外部通過(guò) 8080 端口訪問(wèn) tomcat 應(yīng)用了。

申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)文章

熱門(mén)排行

信息推薦