游戏人生
首页
(current)
GameDevTools
登陆
|
注册
个人中心
注销
OpenResty 教程
OpenResty 简介
OpenResty Ubuntu安装
OpenResty 第一个例子
OpenResty 目录结构
OpenResty 启动和关闭
OpenResty 热重启
OpenResty 执行lua代码
OpenResty 执行lua文件
OpenResty 网站服务
OpenResty 访问指定网页
OpenResty 多网页网站
OpenResty 日志
OpenResty 流水线
OpenResty ip黑名单
OpenResty 反向代理
OpenResty 负载均衡
<< OpenResty 日志
OpenResty ip黑名单 >>
OpenResty 请求处理阶段划分(流水线)
OpenResty把请求处理划分成`rewrite` `access` `content`等若干个阶段,每个阶段都可以指定单独的 lua 脚本来做处理。 假如我要实现黑名单功能,那么在 `access` 阶段,就可以对客户端的 IP 进行判定,来决定拒绝还是放行,而不用等到 `content` 阶段。 ------------ #### 1. OpenResty请求处理阶段划分 在收到客户端的请求后,OpenResty对每个请求都会使用一个专门的“流水线”顺序进行处理,“流水线”上就是OpenResty定义的处理阶段,包括: ```shell ssl SSL/TLS安全通信和验证 prehead 在正式处理之前 预读数据,接受http请求头 rewrite 检查/改写url,实现跳转 重定向 access 访问权限控制 content 产生实际响应内容 filter 对content产生的内容进行过滤加工 log 请求处理完毕,记录日志,收尾 ``` 这些处理阶段在OpenResty进程里的关系如图  如果只是用来做web服务,那么关注 content 阶段即可。 ------------ #### 2.OpenResty阶段执行程序 在不同的阶段,可以使用特定的标签,执行lua脚本。 常用的有 ```shell rewrite_by_lua_file --rewrite阶段,检查,改写uri access_by_lua_file --检查权限,例如ip地址 限制访问次数 content_by_lua_file --主要的逻辑,产生内容,返回给客户端的。 body_filter_by_lua_file --filter阶段,对数据编码 加密 附加额外数据等 log_by_lua_file --可以向后端发送处理完成的回执 ``` ------------ #### 3.实例 下面通过一个实例,来了解OpenResty请求处理阶段划分。 修改配置文件,为每个阶段,指定lua脚本。 ```shell worker_processes 1; error_log logs/error.log debug; events { worker_connections 1024; } http { server { listen 8080; location ~ ^/(\w+) { default_type text/html; rewrite_by_lua_file service/http/rewrite.lua; access_by_lua_file service/http/access.lua; content_by_lua_file service/http/content.lua; body_filter_by_lua_file service/http/filter.lua; log_by_lua_file service/http/log.lua; } } } ``` 分别创建上面的脚本文件,内容都是输出当前阶段的名称。  重启 OpenResty: ```shell nginx -p `pwd`/ -s reload ``` 访问网址 ```shell http://localhost:8080 ``` 查看日志  从日志,就可以更加直观的看出各个阶段的顺序。
<< OpenResty 日志
OpenResty ip黑名单 >>
提交
5ec8ed60f9046103c7132d10