openresty 和nginx配置进阶
对于upstream负载均衡配置
1.如果后端报错直接返回500 可以直接使用 upstream
upstream backend {
server1,
server2
}
location /api{
proxy_pass https://backend/;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_next_upstream_timeout 3s;
proxy_next_upstream_tries 2;
但如果是在返回的data 里的status 只能使用lua脚本 直接使用openresty更方便
前置知识:
access_by_lua_block 请求前置
proxy_pass转发请求
body_filter_by_lua_block 处理相应阶段逻辑 比如对响应头处理 添加自定义属性 将ip+port写入响应头 方便抓包排查
content_by_lua_block content_by_lua_file lua脚本返回内容 替换 proxy_pass 或者 通过lua file处理多种情况的请求
init_by_lua_block 对某个字典的初始化
共享内存字典 lua_shared_dict
核心思路 直接通过lua脚本替代 业务宕机切换节点逻辑
1. 使用共享内存 lua_shared_dict 通过 cache = ngx.shared.xx 获取到共享内存 key 通过cache.set(name,value,timeout) cache.get(name) 设置 获取内存 记录失败的节点 在下次转发之前 判断是否访问的是已经记录的失败节点 如果是 则切换到另一节点
2. 对于后端服务节点也可以做成动态可配置化 如果直接写在配置文件中引入 则每次变动都需要reload 可以直接写一个update_node 代理 通过lua脚本直接将接口传入的参数 写入节点配置的共享字典中 具体代码如下
content_by_lua
新增模块/版本升级
解压安装包 通过./configure --with指定参数 通过nginx -V / openresty -V 查看当前安装的版本 和安装时携带的模块 在./configure -with时携带之前的模块 并加载指定路径下的新模块 make 生成新的二进制文件 注意不要 make install
然后走热更新流程:
备份文件 cp
kill -USR2 开启新的master
Kill - WINCH 关闭旧的 master
回退 kill HUP 旧进程 kill QUIT 新进程
未完
更多推荐

所有评论(0)