lbset=N:默认为0。设置后端节点的优先级。数值N越低的,优先级越高。httpd总是会先尝试优先级高的,只有优先级高的节点不可用时,才一会尝试优先级低的。
ping=N:默认为0。设置健康状况检查时间间隔。该ping只能检查是否能ping同对方,也就是检测是否能与对方通信。更多的健康状况检查应该使用mod_proxy_hcheck模块。
retry=N:默认为60秒。当检测到后端某节点错误状态(error status)时,将在每N秒后才转发一次请求给该节点。设置为0表示正常转发请求,不用任何等待时间。该属性通常设置用来维护服务器下线然后再上线的情况。
status=VALUE:将节点手动置为何种状态。包括以下几种状态,各状态可使用"+"(默认)来赋予属性,使用"-"来取消属性。例如"+H","S-E"。
D: 该节点被禁用,不再接受任何请求。
S: 该节点处于管理维护的目的被停止。
I: 将该节点设置为无视错误(ignore-errors)模式,此模式下httpd将认为该节点可用,总会转发请求给该节点。
H: 该节点处于hot-standby模式,该节点只有在其他所有后端节点都失效时才启用。因此,该节点为备份节点。
E: 将该节点设置为错误状态(error-state)。
N: 将该节点设置为drain模式,该模式只接受已预定粘滞会话的请求sticky session,其他所有请求都会被忽略。
timeout=ProxyTimeout:设置httpd等待后端节点返回数据的超时时间。
如果使用了"balancer://",例如前面的balancer://myset,将创建一个虚拟的连接池。虚拟连接池中的各节点可共享部分属性,也可以为每个节点设置上面所说的属性。共享属性使用ProxySet指令设置,常见的包括下面几种:
lbmethod=METHOD:设置负载均衡算法。有三种:byrequests(默认)按照请求数量计算均衡节点;bytraffic按照io流量计算均衡节点;bybusyness按照繁忙程度计算计算均衡节点。
nofailover=On|Off:默认为off。session不可用时是否转移到其他具有相同session的节点上。如果后端节点不支持session复制,应将此项设置为on。
stickysession:设置session粘滞的名称,如JSESSIONID、PHPSESSIONID。
例如:
<Proxy balancer://myset> BalancerMember http://www2.example.com:8080 BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1 BalancerMember http://hstandby.example.com:8080 status=+H BalancerMember http://bkup1.example.com:8080 lbset=1 BalancerMember http://bkup2.example.com:8080 lbset=1 ProxySet lbmethod=byrequests </Proxy> ProxyRequests off ProxyPass "/images/" "balancer://myset/" ProxyPassReverse "/images/" "balancer://myset/" 2.5.2 ProxyPassMatch指令正则匹配模式的ProxyPass。例如:
ProxyPassMatch "^/(.*\.gif)$" "http://backend.example.com/$1" ProxyPassMatch "^/((?i).*\.php)$" "fcgi://127.0.0.1:9000/var/www/a.com/$1"唯一需要注意的是,在正则匹配之前,远程url参数必须是能够解析的URL地址。例如下面两条指令,第一条指令将失败,因为在正则解析前,url参数无法解析为正确的URL地址,这是一个bug,可以通过修改正则表达式的分组部分将"/"分离出去,正如下面的第二个指令。
ProxyPassMatch "^(/.*\.gif)$" "http://backend.example.com:8000$1" ProxyPassMatch "^/(.*\.gif)$" "http://backend.example.com:8000/$1" 2.5.3 ProxySet指令设置Proxy后端节点的属性。通常用来设置共享属性,但也可以设置某一个节点的属性。
例如:
<Proxy "balancer://hotcluster"> BalancerMember "http://www2.example.com:8080" loadfactor=1 BalancerMember "http://www3.example.com:8080" loadfactor=2 ProxySet lbmethod=bytraffic </Proxy> <Proxy "http://backend"> ProxySet keepalive=On </Proxy> ProxySet "balancer://foo" lbmethod=bytraffic timeout=15 2.5.4 < Proxy >容器< Proxy >容器用于封装一组proxy相关指令,这些指令主要用于设置访问权限、负载均衡成员组以及它们的属性。