标签:utils 参数 png 获取 技术 组件 file 页面 val
OpenResty是一个全功能的 Web 应用服务器。它打包了标准的 Nginx 核心,常用的第三方模块以及大多数依赖项。 可以把它看成是Nginx附加众多的第三方插件的合集。其主体是嵌入lua脚本的支持,让你能够使用lua灵活地处理运算逻辑。
本课程主要讲lua为Nginx带来的新的处理方式,及OpenResty组件的使用。
此方式简单,缺点是无法干预启停插件
yum install yum-utils
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
yum install openresty
wget https://openresty.org/download/openresty-1.15.8.1.tar.gz
tar -zxvf openresty-1.15.8.1.tar.gz
##选择需要的插件启用, --with-Components 激活组件,--without 则是禁止组件
./configure --without-http_redis2_module --with-http_iconv_module
make && make install
vi /etc/profile ##加入path路径
export PATH=$PATH:/usr/local/openresty/nginx/sbin/
source /etc/profile ##生效配置
nginx -V ##如下显示,则表示安装成功
主要帮助对http请求取参、取header头、输出等
ngx.arg |
指令参数,如跟在content_by_lua_file后面的参数 |
ngx.var |
request变量,ngx.var.VARIABLE引用某个变量 |
ngx.ctx |
请求的lua上下文 |
ngx.header |
响应头,ngx.header.HEADER引用某个头 |
ngx.status |
响应码 |
ngx.log |
输出到error.log |
ngx.send_headers |
发送响应头 |
ngx.headers_sent |
响应头是否已发送 |
ngx.resp.get_headers |
获取响应头 |
ngx.is_subrequest |
当前请求是否是子请求 |
ngx.location.capture |
发布一个子请求 |
ngx.location.capture_multi |
发布多个子请求 |
ngx.print |
输出响应 |
ngx.say |
输出响应,自动添加‘\n‘ |
ngx.flush |
刷新响应 |
ngx.exit |
结束请求 |
Nginx执行lua脚本片断时,需要明确指明执行的nginx阶段时机。主要有以下几种时机:
set_by_lua* : 设置nginx变量,实现复杂的赋值逻辑
rewrite_by_lua* : 实现转发、重定向等功能
access_by_lua* : IP 准入、接口访问权限等情况集中处理
content_by_lua* : 接收请求处理并输出响应
header_filter_by_lua* : 设置header和cookie
body_filter_by_lua* : 对响应数据进行过滤,如截断/替换等
在content阶段,执行lua脚本,输出hello,peter
页面请求路径:http://lua.enjoy.com/args?a=20&b=50
则ngx.var.arg_a即取得a参数值,如下图:
请求:http://lua.enjoy.com/args_read?a=20&b=50
使用端传参:
脚本中借助ngx.arg取参
一般校验动作,指定在access阶段执行脚本
脚本处理
Nginx有时候,需要对下游服务生成的内容进行处理过滤,如下图
脚本中的处理
OpenResty提供了非常多的第三方插件,支持操作redis/mysql等服务,lua使用它们的模式一般按以下流程
u require “resty/xxx” :导入模块功能,类似java中的import导入类
u local obj = xxx:new() :模块创建对象obj
u local ok, err = obj :connect :对象连接到目标库
u obj :method :这里可以为所欲为,尽情操纵目标库了
Lua-resty-redis插件,对Nginx操作redis的支持十分强大,成熟的用法演示如下:
基础的引入、连接动作
redis操作动作
具体全量的程序,见源码配置包
引入模块、创建连接
mysql查询操作
标签:utils 参数 png 获取 技术 组件 file 页面 val
原文地址:https://www.cnblogs.com/Soy-technology/p/11355625.html