参考资料

  1. 如何设置Nginx的SSL/TLS加密?
  2. 忽略非错误信息 nginx -q详细说明以及案例
  3. Nginx代理缓存配置详细说明以及案例
  4. 如何使用Nginx模块增强安全性?
  5. Nginx端口监听(listen指令)详细说明以及案例
  6. nginx 配置ssl
  7. Nginx的基本配置文件结构
  8. Nginx监控工具(Prometheus)配置详细说明以及案例

Nginx负载均衡能力说明:

  1. 负载均衡算法:

  • 轮询(默认):按顺序分配请求

  • 权重(weight):指定服务器处理请求的比例

  • IP哈希(ip_hash):基于客户端IP分配

  • 最少连接(least_conn):优先分配给连接数最少的服务器

  • 响应时间(fair):基于后端响应时间分配(需第三方模块)

  1. 健康检查机制:

  • 被动检查:通过失败重试机制实现

  • 主动检查:需配合第三方模块(如nginx_upstream_check_module)

  1. 会话保持方式:

  • ip_hash方法

  • sticky cookie方法(需第三方模块)

  1. 故障转移:

  • max_fails:允许失败次数

  • fail_timeout:失败超时时间

  • backup:标记备用服务器

配置示例(轮询+权重):

http {
    upstream backend {
        server 192.168.1.100:8080 weight=3;
        server 192.168.1.101:8080 weight=2;
        server 192.168.1.102:8080 backup;
        
        # 可选参数
        least_conn;          # 最少连接算法
        # ip_hash;           # IP哈希算法
        keepalive 32;        # 长连接数
    }

    server {
        listen 80;
        
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            
            # 健康检查相关
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
            proxy_connect_timeout 2s;
            proxy_read_timeout 5s;
        }
    }
}

IP哈希配置示例:

upstream backend {
    ip_hash;
    server 192.168.1.100:8080;
    server 192.168.1.101:8080;
}

最少连接配置示例:

upstream backend {
    least_conn;
    server 192.168.1.100:8080;
    server 192.168.1.101:8080;
}