2024-11-30 17:57:11
1.负载均衡配置
2.失败重试配置
在fail_timeout时间内失败了max_fails次请求后,认为上游服务器不可用,就会将服务地址剔除掉,fail_timeout时间后会再次将服务器加入存活列表进行重试。
limit_req_zone指令设置参数
参数说明
limit_req_zone定义在http块中,$binary_remote_addr表示保存客户端IP地址的二进制形式。
Zone定义IP状态及URL访问频率的共享内存区域。zone=keyword标识区域的名字,以及冒号后面跟区域大小。16000个IP地址的状态信息约1MB,例子区域可以存储160000个IP地址。
Rate定义最大请求速率。示例中速率不能超过每秒10个请求。
设置限流
burs排队大小,nodelay不限制单个请求间的时间。具体使用可以查看高并发场景如何使用nginx实现限流-实战篇
不限流白名单
该配置说明 192.168.1.0/24网段的ip访问是不限流的,其它限流。ip后面数字的含义
24表示子网掩码:255.255.255.0
16表示子网掩码:255.255.0.0
8表示子网掩码:255.0.0.0
1.浏览器缓存 静态资源缓存用expire
Response Header中添加了Expires和Cache-Control
所谓的静态资源一般包括一直不变的图像,如网站的logo,js、css静态文件还有可下载的内容,媒体文件
协商缓存(add_header ETag/Last-Modified value)包括html文件,经常替换的图片,经常需要修改的js、css文件和基本不变的api接口
不需要缓存包括用户隐私等敏感数据,用户经常变动的api接口
2.代理层缓存
在本地磁盘创建一个文件目录,根据我们的配置把请求资源以k(key自定义,这边用url的hash值)->v形式缓存到目录里,并根据需求对内容设置缓存时长,比如状态码为200缓存10分钟,其余的缓存1分钟等待。要清理缓存可以借助purger的功能。如果ab测试/个性化需求时应禁用浏览器缓存,否则会因为缓存导致误差。
方式一
方式二 lua+redis动态黑名单(openresty)
配置(/usr/local/openresty/nginx/conf/nginx.conf)
lua脚本编写(ip_blacklist.lua)
1.根据cookie实现灰度发布
根据cooke查询version值,根据version跳转到对应的host,如果没有匹配上的就跳转到默认配置。
2.根据来路ip实现灰度发布