配置 nginx
- todo
-
8个处理阶段
init_by_lua
- 初始化
- set_by_lua
- 流程分支处理判断、变量初始化
- rewrite_by_lua
- 转发、重定向、缓存等功能(例如特定请求代理到外网)
- access_by_lua
- 请求访问阶段处理,用于访问控制
- content_by_lua
- 内容处理器,接收请求处理并且输出响应
- header_filter_by_lua
- 应答HTTP过滤处理(例如添加头部信息)
- body_filter_by_lua
- 应答BODY过滤处理(例如完成应答内容统一成大写)
- log_by_lua
- 会话完成后本地异步完成日志记录(日志可以记录在本地,还可以同步到其他机器)
lua 内可用方法
- ngx.var
- nginx 变量
- ngx.req.get_headers()
- 获取请求头
- return table
- ngx.req.get_uri_args
- 获取 url 请求参数
- ngx.redirect
- 重定向
- ngx.print
- 输出响应内容体
- ngx.say
- 同 ngx.print,最后会输出换行符
- ngx.header
- 输出响应头
- ngx.exec
- syntax: ngx.exec(uri, args?)
- context: rewrite_by_lua, access_by_lua, content_by_lua*
- 执行对应的
location
- .etc
场景
灰度发布
- 部分用户可以访问最新内容/尝鲜最新功能
- 如何区别用户
- 用户的信息 cookie 等信息
- 根据用户的 ip 地址
- header
x_forwarded_for
client ip + 多层 proxy ipx_real_ip
真实 ip
$remote_addr
- header