这种方式不需要 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 应用了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易采站长站。









