利用Apache的转发模块实现反向代理服务器

问题由来
公司的LAMP服务器使用Apache的VirtualHost功能部署了多个拥有独立域名的网站。httpd.conf配置文件部分如下:

# 省略本文无关部分
Listen 80

# www.xxx.com
<VirtualHost *>
    ServerAdmin [email protected]
    DocumentRoot "/var/www/xxx"
    ServerName www.xxx.com
</VirtualHost>

# www.yyy.com
<VirtualHost *>
    ServerAdmin [email protected]
    DocumentRoot "/var/www/yyy"
    ServerName yyy.com
    ServerAlias www.yyy.com
</VirtualHost>

# 省略其他网站配置可见,Apache侦听在80端口上,并依据域名来分发请求到不同的网站目录。

解决思路
要把Tomcat网站集成到Apache中,主要方式有两种。一是通过AJP协议,把Tomcat作为Apache的worker;二是使用mod_proxy和mod_proxy_http模块转发请求至Tomcat。

第一种方式,应该效率高,毕竟Tomcat也是Apache家的产品,集成起来相当稳定容易。
第二种方式,通用性强,不仅可以转发到Tomcat,还可以转发到任意的HTTP服务器程序,如IIS,另外的Apache实例。

根据个人爱好,我选择了第二种方式。

解决方案
首先让Tomcat侦听8080端口。

然后修改httpd.conf。

# 加载转发模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

与逆向代理(Reverse Proxy)相对应的是Apache的正向代理(Forward Proxy)功能,它需要浏览器端设置代理服务器。

Apache 的详细介绍:请点这里
Apache 的下载地址:请点这里

相关推荐