问题:openresty'如何'能成为更好的Web服务器
解答:'dynamic动态' 处理'请求'和'响应'
① 背景
备注: nginx的'dynamic'是通过'if'和'variable'做简单的动态处理
核心关注: 'lua-nginx-module' 和 'lua-resty-core' 库
③ 请求
1) '请求行 request_line'
注意点: openresty 修改'method'、'uri'、'args'、'scheme'
需求: 通过 'API' 来获取 'HTTP 协议版本号'
注意'事项'
需求: 改写 'uri 和 args' API
2) 请求头 'request header'
关注点: '获取'请求头
关注点: '修改'和'删除'请求头
④ 请求体
⑤ 响应
1) '状态行'
备注: 关注'状态码'
2) '响应头'
注意: 方法'1'和方法'2'的区别?
遗留: 多个'相同'响应头?
3) '响应体'
⑥ 答疑解惑
补充:Content-Type只是用于'客户端与服务器之间'协议'如何解析body'的
⑦ 多条件判断
if($host = 'www.nginx.com'){
rewrite ^/abc/ https://ww.wzj.com/kafka permanent;
}
需求:类似于'请求' https://www.nginx.com/abc 进行'跳转'--> '多条件判断'
⑧ nginx原生代理头补充
重要'理念':
一些响应头'只影响当前nginx',所以nginx默认'不会'再前向透传给'客户端',避免'影响面扩大'
常见场景:控制'nginx'的'缓存'、'重定向'、'限速'、'编码'等行为
涉及: proxy_pass_header、proxy_hide_header、proxy_ignore_headers