有时我们会发现,尽管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,转载请注明原文链接。
不明觉厉,打个酱油
感觉Cpanel主机会更简单一点,当然对于高手来说,没有区别吧。
转载已注明http://www.nb-fk.com/20.html