[干货]Openresty编译安装介绍
承接上次Nginx与Openresty文章, 简单介绍Openresty的编译及简单demo。...
承接上次
Nginx与Openresty文章, 简单介绍Openresty的编译及简单demo。
本次安装以CentOS为例, 不足之处多多指正。
- 安装基本依赖库
yum install readline-devel pcre-devel openssl-devel gcc curl
- 下载Openresty安装包
curl -O https://openresty.org/download/openresty-1.11.2.2.tar.gz&& tar zxvf openresty-1.11.2.2.tar.gz&& cd openresty-1.11.2.2
示例代码视情况更改 - 编译安装
./configure --prefix=/opt/openresty--with-pcre-jit--with-http_iconv_module--with-http_postgres_module-j2
各人编译时,--with-http_postgres_module
选项需要有libpqxx-devel
库
所有模块,可以通过编译介绍
./configure --help
查看 [list] - 默认使用luajit
- --prefix 安装目录
- --with-pcre-jit 开启PCRE支持
- --with-http\_iconv\_module Iconv Nginx 模块
- --with-http\_postgres\_module Postgres Nginx 模块
- --with-http\_drizzle\_module 连接MySQL/Drizzle模块
/opt/openresty/nginx/sbin/nginx
[/*][/list]
示例配置OpenResty 初步体验
location = /wafMon {
default_type "text/html";
content_by_lua_file /opt/openresty/nginx/ngxjo_lua_waf/monitor.lua;
}
location的匹配正则,不再简单介绍。请求"IP/wafMon"时, 由monitor.lua处理 常用method
- 获取uri
GET请求
ngx.req.get_uri_args()
POST请求
ngx.req.read_body()
local arg = ngx.req.get_post_args()
- 读取请求body [list]
- 全局配置
lua_need_request_body on
- 非全局读取
ngx.req.read_body()local data = ngx.req.getbodydata()
ngx.print,
ngx.say两种输出方式均为异步
响应体过大时,可以使用chunked方法
local data
while true do
data = file:read(1024)
if nil == data then
break
end
ngx.print(data)
ngx.flush(true)
end
file:close()
[/*][*]返回状态
ngx.status = 403
[/*][/list]
注:
ngx.exit()为中断当前操作
ngx.eof()为中断响应流输出,中断HTTP连接
具体用法可以参考
OpenRe
sty
最佳实践
nginx非常棒的一点是,会把一个会话分成很多阶段,第三方模块可以根据需求挂载到不同阶段。 11个执行阶段分为执行阶段介绍
post-read、server-rewrite、find-config、
rewrite、post-rewrite、preaccess、access、
post-access、try-files、content、log
相应的openresty中lua也有多个阶段,常用的介绍如下
- set_by_lua: 流程分之处理判断变量初始化
- rewrite_by_lua: 转发、重定向、缓存等功能(例如特定请求代理到外网)
- access_by_lua: IP准入、接口权限等情况集中处理(例如配合iptable完成简单防火墙)
- content_by_lua: 内容生成
- header_filter_by_lua: 应答HTTP过滤处理(例如添加头部信息)
- body_filter_by_lua: 应答BODY过滤处理(例如完成应答内容统一成大写)
- log_by_lua: 回话完成后本地异步完成日志记录(日志可以记录在本地,还可以同步到其他机器)
星辰干货店
通过 逼稿 抢稿 人道主义欺诈的方式搞到的各种干货都在这里
关注 星辰工作室
微信扫一扫关注公众号