nginx负载均衡配置

1.nginx负载均衡配置

bash 复制代码
upstream lbs {
    server 192.168.1.12:8080;
    server 192.168.1.12:8081;
}

server {
    listen       80;
    server_name  localhost a.com;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        root   html;
        index  index.html index.htm;
    }

    location /api/ {
        proxy_pass http://lbs;
        proxy_redirect default;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

2.nginx常见的负载均衡策略

  • 节点轮询(默认)

    • 简介:每个请求按顺序分配到不同的后端服务器
    • 场景:会造成可靠性低和负载分配不均衡,适合静态文件服务器
  • weight权重配置

    • 简介:weight和访问比率成正比,数字越大,分配得到的流量越高

    • 场景:服务器性能差异大的情况使用

      bash 复制代码
      upstream lbs {
          server 192.168.1.12:8080 weight=1;
          server 192.168.1.12:8081 weight=5;
      }
  • ip_hash(固定分发)

    • 简介:根据请求按访问IP的hash结果分配,这样每个用户就可以固定访问一个后端服务器

    • 场景:服务器业务分区、业务缓存、session需要单点的情况

      bash 复制代码
      upstream lbs {
          ip_hash;
          server 192.168.1.12:8080;
          server 192.168.1.12:8081;
      }
  • upstream还可以为每个节点设置状态值

    • down:当前的server暂时不参与负载;server 192.168.1.12:8080 down;
    • backup:其它所有的非backup机器down的时候,会请求backup机器,这台机器压力会最轻,配置也会相对低;server 192.168.1.12:8080 backup;

3.nginx后端节点可用性探测和配置

  • 如果某个应用挂了,请求不应该继续分发过去

    • max_fails:允许请求失败的次数,默认为1,当超过最大次数时就不会请求

    • fail_timeout:max_fails次失败后暂停的时间,默认为10s

    • 参数解释

      • max_fails=N 设定nginx与后端节点通信的尝试失败的次数
      • 在fail_timeout参数定义的时间内,如果失败的次数达到此值,nginx这个节点不可用
      • 在下一个fail_timeout时间段到来前,服务器不会再被尝试
      • 失败的尝试次数默认是1,如果设置为0就会停止统计尝试次数,认为服务器是一直可用的,一般不会如此配置
    • 具体什么是nginx认为的失败呢

      • 可以通过指令proxy_next_upstream来配置什么是失败的尝试
      • 注意默认配置时,http_404状态不被认为是失败的尝试
  • 配置实操

    bash 复制代码
    upstream lbs {
        server 192.168.1.12:8080 max_fails=2 fail_timeout=60s;
        server 192.168.1.12:8081 max_fails=2 fail_timeout=60s;
    }
    
    server {
        listen       80;
        server_name  localhost a.com;
    
        #charset koi8-r;
    
        #access_log  logs/host.access.log  main;
    
        location / {
            root   html;
            index  index.html index.htm;
        }
    
        location /api/ {
            proxy_pass http://lbs;
            proxy_redirect default;
            proxy_next_upstream error timeout http_500 http_503 http_404;
        }
    
        #error_page  404              /404.html;
    
        # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
相关推荐
zzyh12345610 小时前
spring cloud如何实现负载均衡
spring·spring cloud·负载均衡
Narutolxy14 小时前
使用 Nginx 实现动态图片加水印:技术探索与实践指南20250122
运维·nginx
�时过境迁,物是人非17 小时前
ECS中实现Nginx四层和七层负载均衡以及ALB/NLB实现负载均衡
运维·nginx·负载均衡
东软吴彦祖17 小时前
包安装利用 LNMP 实现 phpMyAdmin 的负载均衡并利用Redis实现会话保持nginx
linux·redis·mysql·nginx·缓存·负载均衡
牙牙70518 小时前
ansible一键安装nginx二进制版本
服务器·nginx·ansible
苹果醋31 天前
golang 编程规范 - Effective Go 中文
java·运维·spring boot·mysql·nginx
KwokRoot1 天前
Nginx正向代理配置
运维·nginx
myshare20221 天前
深入探索 Nginx 的高级用法:解锁 Web 服务器的强大潜能
nginx
Lime-30902 天前
Nginx+Tomcat实现动静分离
java·服务器·nginx
计算机毕设定制辅导-无忧学长2 天前
Nginx 反向代理与负载均衡配置实践
运维·nginx·负载均衡