网站首页 > 技术教程 正文
基本功能
upstream模块用于定义一个或一组上游服务(应用服务器)的相关信息
基本语法
upstream name {
server address1 [parameters];
server address2 [parameters];
...
}
默认值: 无
上下文: http
指令集
upstream 段名,以'{'开始,'}'结束,中间定义上有服务URL
server 定义上游服务地址
zone 定义共享内存,用于跨worker子进程
keepalive 对上游服务启用长连接
keepalive_requests 一个长连接最多请求个数
keepalive_timeout 空闲情形下,一个长连接的超时时间
hash 哈希负载均衡算法
ip_hash 依据IP进行哈希计算的负载均衡算法
least_conn 最少连接数负载均衡算法
least_time 最短响应时间负载均衡算法
random 随机负载均衡算法
基本用法
最简单的就是声明一个upstream,有点像变量,用的时候直接引用即可,通过upstream可以对上游服务器地址进行统一管理
upstream sales_api {
server 10.10.16.99:8099;
}
server{
listen 80;
server_name sale.jabberwocky.cn;
location ^~ /saleapi/{
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_buffer_size 64k;
proxy_buffers 16 32k;
proxy_next_upstream http_502 http_504 error timeout invalid_header;
#-------------------------------#
proxy_pass http://sales_api;
#-------------------------------#
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
root /usr/local/nginx/html/sale/;
}
}
高可用特性
upstream在默认情况下会轮询上游服务器,每个请求会按照时间顺序逐一分配,如果其中一台后端服务器宕机,会自动剔除;能够提高整个系统的容错性。
upstream sales_api {
server 10.10.16.99:8099;
server 10.10.17.99:8099;
}
server{
listen 80;
server_name sale.jabberwocky.cn;
location ^~ /saleapi/{
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_buffer_size 64k;
proxy_buffers 16 32k;
proxy_next_upstream http_502 http_504 error timeout invalid_header;
#-------------------------------#
proxy_pass http://sales_api;
#-------------------------------#
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
root /usr/local/nginx/html/sale/;
}
}
其他分配请求的方式
除了最基本的轮询外,通过配置parameters可以实现加权轮询等其他分配方式
- weight=number 加权轮询
upstream sales_api {
server a weight=7;
server b weight=3;
}
# 解释: 10次请求其中7次会转发到a服务器,3次转发到b服务器
- max_conns=number 限制连接数(注意不是请求数)
upstream sales_api {
server a max_conns=2;
server b max_conns=2;
}
# 解释:用来限制同时连接到upstream负载上的单个服务器的最大连接数,
# 作用是可以对单个服务器进行限流,防止服务器超负荷运转.默认值为0,则表示没有限制
- fail_timeout=time 服务器不可用判定
upstream sales_api {
ip_hash;
server a max_fails=3 fail_timeout=30s;
server b max_fails=3 fail_timeout=30s;
}
# 解释: 在ip_hash轮询方式下,30s内请求某一应用失败3次,认为该应用宕机,后等待30s,
# 这期间不会再把新请求发送到宕机应用,时间到后再有新请求进来继续尝试连接宕机应用且仅尝试一次,
# 如果还是失败,则继续等待30s....以此循环,直到恢复
- backup 备份服务器,仅当其他服务器都不可用时
upstream sales_api {
ip_hash;
server a ;
server b backup;
}
# 解释: 仅当a服务器不可用时才会把请求转发到b服务器
- down 标记服务器长期不可用,离线维护
猜你喜欢
- 2024-10-11 Python运维:Nginx作为七层负载均衡调度器
- 2024-10-11 nginx的反向代理(nginx的反向代理模块是啥)
- 2024-10-11 入口网关服务发现-Openresty动态upstream
- 2024-10-11 nginx可以集群吗(nginx集群 并绑定一个ip)
- 2024-10-11 nginx的upstream目前支持5种方式的分配
- 2024-09-21 详解:Nginx 反向代理、后端检测模块
- 2024-09-21 Nginx反向代理相关设置(基于linux)
- 2024-09-21 简单练习Nginx反向代理和负载均衡
- 2024-09-21 nginx upstream header过大问题解决
- 2024-09-21 Nginx 面试通关秘籍-23.反向代理服务器有哪些优点及Nginx 实现?
你 发表评论:
欢迎- 最近发表
-
- Linux新手必看:几种方法帮你查看CPU核心数量
- linux基础命令之lscpu命令(linux中ls命令的用法)
- Linux lscpu 命令使用详解(linux常用ls命令)
- 如何查询 Linux 中 CPU 的数量?这几个命令要知道!
- 在linux上怎么查看cpu信息(linux如何查看cpu信息)
- 查看 CPU 的命令和磁盘 IO 的命令
- 如何在CentOS7上改变网卡名(centos怎么改网卡名字)
- 网工必备Linux网络管理命令(网工必备linux网络管理命令是什么)
- Linux 网络命令知多少(linux 网络 命令)
- Linux通过命令行连接wifi的方式(linux命令行连接无线网)
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)