[干货]Openresty编译安装介绍
Posted 星辰工作室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[干货]Openresty编译安装介绍相关的知识,希望对你有一定的参考价值。
本次安装以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
查看默认使用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
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
全局配置
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
注:
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: 回话完成后本地异步完成日志记录(日志可以记录在本地,还可以同步到其他机器)
将处理分为多个阶段,模块根据需要分阶段挂载是值得借鉴的地方,也使我们编写模块更加方便,接下来的文章会拿简单的例子做深入介绍。
星辰干货店
通过 逼稿 抢稿 人道主义欺诈的方式搞到的各种干货都在这里
以上是关于[干货]Openresty编译安装介绍的主要内容,如果未能解决你的问题,请参考以下文章