当我们将应用部署到 tomcat 之后,默认是通过 http://codebelief.com:8080/myapp/ 这种形式来访问的。
很显然,这只适用于调试的情况,在实际使用时,我们通常会为根据需要,为应用绑定更加便于访问的路径。
一般来说,我们不直接将 tomcat 运行在 80 端口,更安全的做法是在 80 端口运行一个 http server,然后通过反向代理转发到 8080 端口。
以下的几种方式均基于反向代理实现,需要对应的反向代理服务程序,这里使用的是 apache,也可以用 nginx 实现,大同小异。
首先,需要确保开启 mod_proxy 模块:
$ sudo a2enmod proxy $ sudo a2enmod proxy_http $ service apache2 restart
通过 80 端口访问
即通过 http://codebelief.com/myapp/ 的形式访问 web 应用。
我们在 80 端口运行 apache,由 apache 处理 80 端口的请求,然后将所有请求转发给运行在 8080 端口的 tomcat 处理,这样就无需修改 tomcat 的运行端口,另一方面也确保了安全性。
在 /etc/apache2/sites-available/ 目录下添加配置文件 tomcat.conf:
<VirtualHost *:80> ServerName codebelief.com ProxyRequests On ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ </VirtualHost>
然后将该配置文件通过软链接放入 /etc/apache2/sites-enabled/ 目录以启用该配置。
可以使用以下命令:
$ ln -s tomcat.conf /etc/apache2/sites-enabled/tomcat.conf
也可以使用 apache 自带的命令:
$ a2ensite tomcat
最后重新加载 apache 配置文件:
$ service apache2 reload
完成。
通过子域名访问
即通过 http://app.codebelief.com/myapp/ 访问 web 应用。
与上述配置过程类似,依然采用反向代理的方式将子域名请求转发给 8080 端口。
只需将 tomcat.conf 文件改成:
<VirtualHost *:80> ServerName codebelief.com ServerAlias app.codebelief.com ProxyRequests On ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ </VirtualHost>
同样,将该文件链接到 sites-enabled 目录下,然后 reload 配置即可。
域名根路径访问应用
即直接通过 http://codebelief.com 的形式访问 myapp,而无需加应用所在目录名。
tomcat.conf 文件内容如下,其它步骤一样。
<VirtualHost *:80> ServerName codebelief.com ServerAlias app.codebelief.com ProxyRequests On ProxyPass / http://localhost:8080/myapp/ ProxyPassReverse / http://localhost:8080/myapp/ </VirtualHost>
这样,就可以通过 http://codebelief.com 或者 http://app.codebelief.com 直接访问 myapp 了。
使用根路径直接访问应用,还有另一种实现方式。
这种方式不需要 apache 或 nginx 等反向代理服务程序,但是如果要使用这种方式,最好是 tomcat 只运行单个 web 应用,避免一个 web 应用的内部路径与其它 web 应用的路径冲突。
我们这里不考虑端口号的修改,使用默认的 8080 端口。
目标是通过 http://codebelief.com:8080 来访问 myapp。
修改 tomcat/conf/server.xml 文件
在 <Engine> 标签内添加下面的主机配置:
<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 标签中的 name 表明该配置用于处理来自 codebelief.com 主机的请求。注意,name 必须为一级域名或 ip 地址。
要使得子域名 app.codebelief.com 也能使用该配置,即根路径直接访问 myapp,那么需要使用 Alias 标签绑定该子域名。
Context 标签内的 path="" 表示直接通过根路径访问, docBase="myapp" 表示根路径默认访问的是 myapp 应用。
对外屏蔽 8080 端口
当我们使用不包含端口号的形式访问 myapp 时,我们还可以对外屏蔽 8080 端口,即必须通过 80 端口由 apache 转发给 tomcat。
要使外部不能直接访问 8080 端口,可以在 iptables 中添加对应规则,有关 iptables 的具体原理和用法,可以自行参考相关文章。
在这里,只需要执行以下命令:
$ iptables -t mangle -A PREROUTING -p tcp --dport 8080 -j DROP
该命令会在 mangle 表中的 PREROUTING 链添加指定规则,即对来自 8080 端口的 tcp 连接,直接做丢弃处理。
这样就可以禁止外部通过 8080 端口访问 tomcat 应用了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 明达年度发烧碟MasterSuperiorAudiophile2021[DSF]
- 英文DJ 《致命的温柔》24K德国HD金碟DTS 2CD[WAV+分轨][1.7G]
- 张学友1997《不老的传说》宝丽金首版 [WAV+CUE][971M]
- 张韶涵2024 《不负韶华》开盘母带[低速原抓WAV+CUE][1.1G]
- lol全球总决赛lcs三号种子是谁 S14全球总决赛lcs三号种子队伍介绍
- lol全球总决赛lck三号种子是谁 S14全球总决赛lck三号种子队伍
- 群星.2005-三里屯音乐之男孩女孩的情人节【太合麦田】【WAV+CUE】
- 崔健.2005-给你一点颜色【东西音乐】【WAV+CUE】
- 南台湾小姑娘.1998-心爱,等一下【大旗】【WAV+CUE】
- 【新世纪】群星-美丽人生(CestLaVie)(6CD)[WAV+CUE]
- ProteanQuartet-Tempusomniavincit(2024)[24-WAV]
- SirEdwardElgarconductsElgar[FLAC+CUE]
- 田震《20世纪中华歌坛名人百集珍藏版》[WAV+CUE][1G]
- BEYOND《大地》24K金蝶限量编号[低速原抓WAV+CUE][986M]
- 陈奕迅《准备中 SACD》[日本限量版] [WAV+CUE][1.2G]