Apache中应用反向代理



网络中现有两台服务器,各自提供WEB与EMAIL邮局服务,但公网IP地址只有一个,因此利用Apache的反向代理功能,将其中一台WEB服务影射到另一台WEB服务的URL空间中,形成虚拟目录对外提供服务。

反向代理对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的名字空间
(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它
自己的一样。

反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓
冲服务。另外,还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。

可以使用ProxyPass指令激活反向代理(在RewriteRule指令中使用[P]标记也可以)。配置反向代理并不需要打开ProxyRequests指令。

示例如下:

LoadModule proxy_module      modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule headers_module    modules/mod_headers.so

<IfModule mod_proxy.c>    ProxyRequests off#控制对代理服务器的访问
<Proxy *>
    Order deny,allow
    Allow form all
</Proxy>
    #ProxyPass 将一个远端服务器映射到本地服务器的URL空间中
     ProxyPass /app1/ http://internal1.example.com/
    ProxyPass /app2/ http://internal2.example.com/
    #ProxyPassReverse 调整由反向代理服务器发送的HTTP应答头中的URL
    ProxyPassReverse /app1/ http://internal1.example.com/
    ProxyPassReverse /app2/ http://internal2.example.com/
</IfModule>
设置后重启apache服务

apachectl restart

具体设置详见Apache HTTP Server文档中的mod_proxy章节



发表评论