网站首页 > 精选教程 正文
基本功能
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-16 流量拷贝怎么办?Nginx模块mirror来助力-10
- 2024-10-16 Nginx之http模块是如何解析http请求的,6个步骤一目了然-02
- 2024-10-16 【Nginx基础】Map模块的使用案例 nginx 模块
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)