设为首页 收藏本站
查看: 707|回复: 0

[经验分享] Nginx 高级配置

[复制链接]

尚未签到

发表于 2017-12-23 06:22:40 | 显示全部楼层 |阅读模式
  nginx官方网站:http://nginx.org/
1.  Nginx连接后端的方式:反向代理(proxy_pass)、直连fastcgi(fastcgi_pass)
  例子:
  fastcgi_pass backend1;
  proxy_pass http://backend2;
  location块中配置此项,表示用反向代理或直连fastcgi的方式连接后端服务,其中backend1、backend2为upstream配置,其中配置下游的ip&port列表和调度参数,见下文。
  注意:fastcgi_pass与proxy_pass是互斥配置,不能同时生效。
2. Nginx调度与负载均衡配置(upstream配置)
1) 轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器。 weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,weight默认值为1。  例如:
  upstream bakend {
  server 192.168.0.14 weight=10;
  server 192.168.0.15 weight=10;
        }2) ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。        例如:  upstream bakend {
  ip_hash;
  server 192.168.0.14:88;
  server 192.168.0.15:80;
        }3) hash 每个请求按访问$hash_seed的hash结果分配。        例如:        upstream bakend {                hash $hash_seed;                server 192.168.0.14:88;  server 192.168.0.15:80;
        }4) fair(第三方)按后端服务器的响应时间来分配请求,响应时间短的优先分配,需要第三方插件。        upstream backend {  server 192.168.0.14:88;
  server 192.168.0.15:80;
  fair;
        }5) url_hash(第三方) 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法        upstream backend {                server squid1:3128;  server squid2:3128;
  hash $request_uri;
  hash_method crc32;
  }
3. upstream配置参数
  例子:
  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;
  }
proxy_pass http://bakend/;或fastcgi_pass backend; 为每个设备的状态设置为:        1) down 表示单前的server暂时不参与负载,一般用于标记故障机。        2) weight 默认为1.weight越大,负载的权重就越大。  3) max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
  4) fail_timeout:max_fails次失败后,暂停改服务的时间,超过时间后继续向该服务发送流量,默认为10s。
  5) backup:备用服务器,其它所有的非backup机器down或者忙的时候,启用backup机器。
4.容错机制
  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_passproxy_pass轮询默认会将请求发送到下一个服务节点上  默认不会将请求发送到下一个服务节点上,直接拒绝请求
  在proxy_next_upstream中配置http_502错误,则会将请求发送到下一个服务节点上
weight默认会将请求发送到下一个服务节点上  默认不会将请求发送到下一个服务节点上,直接拒绝请求
  在proxy_next_upstream中配置http_502错误,则会将请求发送到下一个服务节点上
hash  默认不会将请求发送到下一个服务节点上,直接拒绝请求
  默认不会将请求发送到下一个服务节点上,直接拒绝请求
  在proxy_next_upstream中配置http_502错误,则会将请求发送到下一个服务节点上

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-427034-1-1.html 上篇帖子: Nginx-ngx_lua模块原理和内置函数 下篇帖子: 修改Nginx与Apache上传文件大小限制
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表