当我们将应用部署到 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 了。
使用根路径直接访问应用,还有另一种实现方式。









