nginx 配置里upstream的作用是什么

nginx 配置里upstream的作用是什么

经验文章nimo972025-07-06 15:31:303A+A-

在 Nginx 配置中,upstream 块的作用是定义一组后端服务器(上游服务器),用于实现负载均衡和反向代理。通过 upstream,Nginx 可以将客户端请求分发到多个后端服务器,提高应用的可用性、性能和容错能力。

核心作用

1.负载均衡

将客户端请求均匀分配到多个后端服务器,避免单点压力过大。例如:

nginx

upstream backend_servers {
    server 192.168.1.100:8080;
    server 192.168.1.101:8080;
}

Nginx 会根据负载均衡算法(如轮询、IP 哈希、权重等)选择一个后端服务器处理请求。

2.反向代理

upstream 通常与 proxy_pass 指令配合使用,将请求转发到后端服务器:

nginx

server {
    listen 80;
    location / {
        proxy_pass http://backend_servers;  # 转发到 upstream 定义的服务器组
    }
}

3.健康检查

Nginx 会自动检测后端服务器的健康状态,当某个服务器不可用时,自动将其从负载均衡池中移除。例如:

nginx

upstream backend_servers {
    server 192.168.1.100:8080 max_fails=3 fail_timeout=30s;
    server 192.168.1.101:8080 max_fails=3 fail_timeout=30s;
}
  • max_fails:允许的最大失败次数(默认 1 次)。
  • fail_timeout:失败后暂停的时间(默认 10 秒)。

负载均衡算法

upstream 支持多种负载均衡算法,通过 ip_hash、least_conn 等指令指定:

nginx

upstream backend_servers {
    ip_hash;  # 基于客户端IP的哈希算法,确保同一客户端始终访问同一服务器
    server 192.168.1.100:8080;
    server 192.168.1.101:8080;
}

常用算法:

  • 轮询(默认):按顺序轮流分发请求。
  • weight:加权轮询,根据服务器性能分配权重。
  • ip_hash:基于客户端 IP 哈希,保证会话一致性。
  • least_conn:转发给当前连接数最少的服务器。

应用场景

  • 高可用架构:通过多台服务器冗余部署,避免单点故障。
  • 水平扩展:增加服务器数量提升整体处理能力。
  • 动静分离:静态资源由 Nginx 直接处理,动态请求转发给后端应用服务器。

示例配置

nginx

# 定义上游服务器组
upstream app_servers {
    server app1.example.com weight=5;  # 权重为5
    server app2.example.com;          # 默认权重为1
    server app3.example.com backup;   # 备份服务器,仅当其他服务器全部不可用时才会启用
}

# 反向代理配置
server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://app_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
点击这里复制本文地址 以上内容由nimo97整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

尼墨宝库 © All Rights Reserved.  蜀ICP备2024111239号-7