全部博文(51)
分类: 系统运维
2015-11-24 12:13:57
nginx官方网站:
例子:
fastcgi_pass backend1;
proxy_pass
location块中配置此项,表示用反向代理或直连fastcgi的方式连接后端服务,其中backend1、backend2为upstream配置,其中配置下游的ip&port列表和调度参数,见下文。
注意:fastcgi_pass与proxy_pass是互斥配置,不能同时生效。
例子:
upstream bakend{
ip_hash;
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060 max_fails=1 fail_timeout=10s;
server 127.0.0.1:7070 backup;
}
1) Nginx 默认判断失败节点状态以connect refuse和time out状态为准,不以HTTP错误状态进行判断失败,因为HTTP只要能返回状态说明该节点还可以正常连接,所以nginx判断其还是存活状态;
2) 除非添加了fastcgi_next_upstream或proxy_next_upstream指令设置对404、502、503、504、500和time out等错误进行转到备机处理;
3) 在next_upstream过程中,会对fails进行累加,如果备用机处理还是错误则直接返回错误信息(但404不进行记录到错误数,如果不配置错误状态也不对其进行错误状态记录)
综述,nginx记录错误数量timeout和connect refuse是永远被记录错误状态,而502、500、503、504只有在配置proxy_next_upstream或fastcgi_next_upstream后nginx才会记录这4种HTTP错误到fails中,当fails大于等于max_fails时,则该节点失效;
注意:
fastcgi_next_upstream与proxy_next_upstream支持的错误并不一致:
fastcgi_next_upstream:error | timeout | invalid_header | http_500 | http_503 | http_403 | http_404 | off
proxy_next_upstream:error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 |http_403 | http_404 | off ...
当fastcgi的服务异常时,因为fastcgi_next_upstream不支持http_502错误,无法对fastcgi异常进行判断,
所以fastcgi_pass与proxy_pass处理的规则也不相同:
|
fastcgi_pass
|
proxy_pass
|
---|---|---|
轮询 | 默认会将请求发送到下一个服务节点上 |
默认不会将请求发送到下一个服务节点上,直接拒绝请求 在proxy_next_upstream中配置http_502错误,则会将请求发送到下一个服务节点上 |
weight | 默认会将请求发送到下一个服务节点上 |
默认不会将请求发送到下一个服务节点上,直接拒绝请求 在proxy_next_upstream中配置http_502错误,则会将请求发送到下一个服务节点上 |
hash |
默认不会将请求发送到下一个服务节点上,直接拒绝请求 |
默认不会将请求发送到下一个服务节点上,直接拒绝请求 在proxy_next_upstream中配置http_502错误,则会将请求发送到下一个服务节点上 |