本文目录:
1 正向代理
2 反向代理
2.1 简单的反向代理配置
2.2 负载均衡:后端成员
2.3 故障转义failover
2.4 提供负载状态显示页面
2.5 proxy相关指令
2.5.1 ProxyPass指令
2.5.2 ProxyPassMatch指令
2.5.3 ProxySet指令
2.5.4 < Proxy >容器
2.5.5 ProxyStatus指令
2.5.6 ProxyVia指令
3 健康状况检查模块
代理方式有两种:正向代理和反向代理。
正向代理是为客户端转发请求,各客户端将请求交给正向代理服务器,正向代理服务器再负责转发给服务端,响应时服务端先响应给正向代理服务器,正向代理服务器再转发给对应的客户端。也就是说,正向代理是为局域网内客户端做代理,它扮演的角色类似于NAT。
反向代理是为服务端转发请求,客户端将请求发送至反向代理服务器,反向代理服务器再将请求转发给真正的服务器以处理请求,响应时后端真正的服务器将处理结果发送给反向代理,再由反向代理构建响应并响应给客户端。
1 正向代理httpd通过ProxyRequests指令配置正向代理的功能。例如:
ProxyRequests On ProxyVia On <Proxy "*"> Require host internal.example.com </Proxy>其中< Proxy >容器表示的是只有internal.example.com下的主机可以通过该正向代理去访问任意URL的请求内容。ProxyVia指令表示在响应首部中添加一个Via字段。
2 反向代理为了成为一个"基本的"web server,提供静态和动态内容给最终用户,httpd(以及其他大多数web server)可以扮演反向代理服务器的角色,也就是众所周知的"网关"服务器。
在这种场景下,Httpd自身不生成产出数据,而是从后端服务器中获取数据,这些后端服务器器一般不会和外界网络通信。当httpd从客户端接收到请求,请求被代理到后端服务器组中的其中一个服务器上,该后端服务器处理请求,生成内容并返回内容给httpd server,最后由httpd server生成实际的HTTP响应给客户端。
有无数应该使用反向代理的理由,最常见的是安全、高可用、负载均衡、集中授权/认证。反向代理的布置和架构中,后端服务器(真正处理请求的服务器)和外界完全绝缘并由此受到保护,对于外界客户端来说,当他们需要关心服务器对象是谁时,它们得到的结果总是反向代理服务器,而非后端服务器。
一个典型的实现如下:
2.1 简单的反向代理配置ProxyPass指令用于映射请求到后端服务器。最简单的代理示例是对所有请求"/"都映射到一个后端服务器上:
ProxyPass "/" "http://www.example.com/" ProxyPassMatch "^/((?i).*\.php)$" "fcgi://127.0.0.1:9000/var/www/a.com/$1"为了地址重定向时也能正确使用反向代理,应该使用ProxyPassReverse指令。
ProxyPass "/" "http://www.example.com/" ProxyPassReverse "/" "http://www.example.com/"或者只为特定的URI进行代理,例如下面的配置,只有/images开头的路径才会代理转发,其他的所有请求都在本地处理。
ProxyPass "/images" "http://www.example.com/" ProxyPassReverse "/images" "http://www.example.com/"假如本地服务器地址为,当请求时,将代理为。
2.2 负载均衡:后端成员上面的配置中没有添加后端服务器节点,无法享受反向代理的优点。因此,有必要添加后端节点。添加的方法是使用< proxy >容器将后端节点定义成一个负载均衡组,各节点是该组中成员,然后代理目标指向组名即可。
例如:
<Proxy balancer://myset> BalancerMember http://www2.example.com:8080 BalancerMember http://www3.example.com:8080 ProxySet lbmethod=bytraffic </Proxy> ProxyPass "/images/" "balancer://myset/" ProxyPassReverse "/images/" "balancer://myset/"balancer://myset告诉httpd,它创建了一个负载均衡节点集合,名称为myset,此集合中有两个后端成员。在上面的配置中,任意/images的请求都会代理至2个成员中的一个。ProxySet指令指定myset均衡组使用的均衡算法为bytraffic,即基于I/O流量字节数权重的算法。ProxySet指令设置的是Proxy容器的公共属性。
httpd有3种复杂均衡算法:
byrequests:默认。基于请求数量计算权重。
bytraffic:基于I/O流量大小计算权重。
bybusyness:基于挂起的请求(排队暂未处理)数量计算权重。