Tomcatweb应用绑定域名的几种方法显然,这只适合调试。在实际使用中,我们通常会根据需要为应用程序绑定一个更易访问的路径。一般来说,我们不会直接在80端口上运行tomcat,在80端口上运行一个http服务器,然后通过反向代理转发到8080端口会比较安全。以下方法都是基于反向代理实现的,需要相应的反向代理服务程序。这里使用Apache,也可以使用nginx,大同小异。ne首先需要确保mod_proxy模块开启:$sudoa2enmodproxy$sudoa2enmodproxy_http$serviceapache2restart通过80端口访问,即通过http://codebelief.com/myapp/访问web应用。我们在80端口运行apache,apache在80端口处理请求,然后将所有请求转发给运行在8080端口的tomcat进行处理,这样就不需要修改tomcat的运行端口,另一方面,安全得到保证。在/etc/apache2/sites-available/目录下添加配置文件tomcat.conf:ServerNamecodebelief.comProxyRequestsOnProxyPass/http://localhost:8080/ProxyPassReverse/http://localhost:8080/然后将配置文件通过软链接放到/etc/apache2/sites-enabled/目录下,启用配置。可以使用如下命令:$ln-stomcat.conf/etc/apache2/sites-enabled/tomcat.conf也可以使用apache自带的命令:$a2ensitetomcat.conf***重新加载apache配置文件:$serviceapache2reload完成。通过子域访问意味着通过http://app.codebelief.com/myapp/访问Web应用程序。与上面的配置过程类似,子域请求仍然是通过反向代理的方式转发到8080端口。只需将tomcat.conf文件更改为:ServerNamecodebelief.comServerAliasapp.codebelief.comProxyRequestsOnProxyPass/http://localhost:8080/ProxyPassReverse/http://localhost:8080/同样,链接文件到sites-enabled目录,然后重新加载配置。通过域名根路径访问应用,就是直接通过http://codebelief.com访问myapp,不需要添加应用的目录名。tomcat.conf文件内容如下,其他步骤相同。ServerNamecodebelief.comServerAliasapp.codebelief.comProxyRequestsOnProxyPass/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文件,在标签中添加如下主机配置:应用程序。codebelief.comHost标签中的名字表示配置用于处理来自codebelief.com主机的请求。注意name必须是一级域名或ip地址。要让子域名app.codebelief.com也使用这个配置,即根路径直接访问myapp,那么需要使用Alias标签绑定子域名。Context标签中的path=""表示直接通过根路径访问,docBase="myapp"表示根路径默认访问myapp应用。对外屏蔽8080端口当我们以不带端口号的形式访问myapp时,也可以对外屏蔽8080端口,即必须由apache通过80端口转发给tomcat。为了防止外部直接访问8080端口,可以在iptables中添加相应的规则。iptables的具体原理和用法,可以自行查阅相关文章。这里只需要执行如下命令:$iptables-tmangle-APREROUTING-ptcp--dport8080-jDROP该命令会在mangle表中的PREROUTING链中添加一条指定的规则,即直接丢弃来自端口的tcp连接8080.这样就可以禁止外部通过8080端口访问tomcat应用了。