CentOS 5 平台通过ProxyPass同时运行多个Web服务器

有时我们会发现,尽管Apache可以满足大多网络服务的需要,但其他的网页或应用服务器会更适合某些特定的任务。值得庆幸的是,我们可以很容易地配置Apache来传递这样的服务请求给其他的服务器并获得处理。这些第二级(或第三级)服务器可以运行在同一台VPS中,或者在单独的机器中(可以在内部网络)。下面的例子以lighttpd为第二级web服务器,但是对应的方法对于转发HTTP请求到其他的web服务器一样适用。

在下面的操作之前,我们假定您已经在CentOS 5 (译者注:CentOS 6, 7一样适用。)上搭建好了Apache服务器。此外,接下来的操作应该在shell中进行,请确保您拥有root权限。

启用Proxy模块

CentOS的Apache HTTP服务器包中已经包含了proxy模块。我们先新建下面这个文件:/etc/httpd/conf.d/proxy.conf 内容为:

1
2
3
4
5
ProxyRequests Off
AddDefaultCharset off
Order deny,allow
Allow from all
ProxyVia On

这样就打开了proxy模块的支持。接下来,执行此条语句重启Apache:
/etc/init.d/httpd restart
Apache会完全重启。若出现问题,可查看错误日志,获取更多信息。

将域名传递至Lighttpd

假设我们已经有了一个网站,地址为www.firstsite.org,此网站运行作为一个普通的虚拟主机运行在Apache服务器之下。我们将用Apache把第二个网站www.secondsite.org的请求传送给一个已经配置好、监听8080端口的lighttpd实例。在你的Apache服务器虚拟主机配置文件中,添加下列信息:

1
2
3
4
5
ServerAdmin support@secondsite.org
ServerName secondsite.org
ServerAlias www.secondsite.org
ProxyPass / http://localhost:8080/
#SSLProxyEngine On

若站点采用SSL,则将上述倒数第二行的注释符删去。上述语段中,ProxyPass目录告知Apache转发所有这个站点的请求给一个监听8080端口的服务器。如果目标服务器是在另一台VPS上(比如是一台只有内网连接的服务器上),可以再此处指明地址。此时,执行

1
/etc/init.d/httpd reload

我们将启用这个网站转发。

将某一特定URL传递至Lighttpd

如果我们希望将http://www.firstsite.org/myapp/这一URL交由运行在lighttpd下的一个web应用来处理,我们只需在firstsite.org网站的虚拟主机配置文件中添加下面一行即可:

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

添加完毕后应当用/etc/init.d/httpd reload重新加载配置文件以启用转发。上述方法是一个能够实现单域名下多web服务器处理请求的简便方法。

本文由香菇肥牛译自Linode Library,转载请注明原文链接。

3 thoughts on “CentOS 5 平台通过ProxyPass同时运行多个Web服务器”

Leave a Comment