域名百科吧

 找回密码
 立即注册
搜索
域名百科吧 首页 域名资讯 查看内容

Tomcat Web 应用绑定域名的几种方式

2017-12-6 22:13| 责任编辑: ymbk8| 查看: 93| 评论: 0

摘要:   12.12年度营销活动开抢,入驻就送超级大礼,马上咨询   当我们将应用部署到 tomcat 之后,默认是通过 http://codebelief.com:8080/myapp/ 这种形式来访问的。   很显然,这只适用于调 ...

  12.12年度营销活动开抢,入驻就送超级大礼,马上咨询

  当我们将应用部署到 tomcat 之后,默认是通过 http://codebelief.com:8080/myapp/ 这种形式来访问的。

  很显然,这只适用于调试的情况,在实际使用时,我们通常会为根据需要,为应用绑定更加便于访问的路径。

  一般来说,我们不直接将 tomcat 运行在 80 端口,更安全的做法是在 80 端口运行一个 http server,然后通过反向代理转发到 8080 端口。

  以下的几种方式均基于反向代理实现,需要对应的反向代理服务程序,这里使用的是 apache,也可以用 nginx 实现,大同小异。

  

ne

  首先,需要确保开启 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:

  

  ServerName codebelief.com

  ProxyRequests On

  ProxyPass / http://localhost:8080/

  ProxyPassReverse / http://localhost:8080/

  

  然后将该配置文件通过软链接放入 /etc/apache2/sites-enabled/ 目录以启用该配置。

  可以使用以下命令:

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

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

  $ a2ensite tomcat.conf

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

  $ service apache2 reload

  完成。

  通过子域名访问

  即通过 http://app.codebelief.com/myapp/ 访问 web 应用。

  与上述配置过程类似,依然采用反向代理的方式将子域名请求转发给 8080 端口。

  只需将 tomcat.conf 文件改成:

  

  ServerName codebelief.com

  ServerAlias app.codebelief.com

  ProxyRequests On

  ProxyPass / http://localhost:8080/

  ProxyPassReverse / http://localhost:8080/

  

  同样,将该文件链接到 sites-enabled 目录下,然后 reload 配置即可。

  域名根路径访问应用

  即直接通过 http://codebelief.com 的形式访问 myapp,而无需加应用所在目录名。

  tomcat.conf 文件内容如下,其它步骤一样。

  

  ServerName codebelief.com

  ServerAlias app.codebelief.com

  ProxyRequests On

  ProxyPass / http://localhost:8080/myapp/

  ProxyPassReverse / http://localhost:8080/myapp/

  

  这样,就可以通过 http://codebelief.com 或者 http://app.codebelief.com 直接访问 myapp 了。

  使用根路径直接访问应用,还有另一种实现方式。

  这种方式不需要 apache 或 nginx 等反向代理服务程序,但是如果要使用这种方式,最好是 tomcat 只运行单个 web 应用,避免一个 web 应用的内部路径与其它 web 应用的路径冲突。

  我们这里不考虑端口号的修改,使用默认的 8080 端口。

  目标是通过 http://codebelief.com:8080 来访问 myapp。

  修改 tomcat/conf/server.xml 文件

  在 标签内添加下面的主机配置:

  

  app.codebelief.com

  

  

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

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

  

  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 应用了。


鲜花

握手

雷人

路过

鸡蛋

随机推荐

热门图片
  • 本周米市惊现多枚极品域名!
  • A5域名每日快讯:域名UB.com被联合比特币启
  • 三数字域名627.com七位数易主
  • 2杂域名D4.com超31万元结拍
  • 三声母域名jww.com中六位易主
发布主题 客服中心 搜索 官方QQ群

河南网络警察报警平台 公共信息安全网络监察 河南经营性网站备案信息 河南不良信息举报中心 中国文明网传播文明

返回顶部