文章目录
1. 概述
Nginx 的 ngx_http_upstream_module
模块用于定义服务器组,这些服务器组可以被 proxy_pass
、fastcgi_pass
、uwsgi_pass
、scgi_pass
、memcached_pass
和 grpc_pass
指令引用。该模块为反向代理提供了负载均衡和故障转移等重要功能。
2. 配置示例及指令说明
2.1 配置示例
# 定义一个名为 'backend' 的 upstream 组,用于负载均衡和故障转移
upstream backend {
# 将请求分发到 backend1.example.com,权重为 5,意味着它将接收更多的流量
server backend1.example.com weight=5;
# 将请求分发到 backend2.example.com 的 8080 端口
server backend2.example.com:8080;
# 通过 UNIX 套接字将请求分发到本地的 backend3 服务
server unix:/tmp/backend3;
# 定义两个备份服务器,仅当主服务器不可用时才会被使用
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
# 定义一个 server 块,用于监听进来的 HTTP 请求
server {
# 定义 location 块,匹配所有 URI(/ 表示根路径)
location / {
# 使用 proxy_pass 指令将请求转发到定义的 upstream 'backend' 组
proxy_pass http://backend;
}
}
这段配置定义了一个上游服务器组 backend
,其中包含三台主服务器和两台备份服务器。主服务器中,backend1.example.com
被赋予了更高的权重,意味着它将处理更多的请求。backend2.example.com
和通过 UNIX 套接字通信的 backend3
被设置为默认权重。当主服务器不可用时,请求将被转发到备份服务器 backup1.example.com
和 backup2.example.com
。
在 server
块中,所有进入的请求(由于 location /
匹配所有 URI)都将通过 proxy_pass
指令被转发到 backend
上游服务器组。这意味着 Nginx 将