Openresty: Nginx核心加很多第三方模块组成,默认集成lua开发环境,提供了大量组件如Mysql、Redis、Memcached等等。
安装
(1)步骤
#!/bin/bash
tar xvf openresty-1.9.7.3.tar.gz
cd openresty-1.9.7.3
./configure --with-luajit --with-http_drizzle_module --with-http_iconv_module --with-ld-opt="-Wl,-rpath,/usr/local/lib" --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module
gmake
gmake install
--with-luajit 集成luajit模块
(2)安装结果
Luajit:luajit环境,lua是一种解释语言,通过luajit可以即时编译lua代码到机器代码,得到很好的性能。
Lualib:要使用的lua库,里边提供了一些默认的lua库,如redis,json库等,也可以把一些自己开发的或第三方库放在这。
Config:存放nginx配置文件。
(3)配置环境
a.配置配置文件路径
在http{}块中添加如下内容:
include /usr/local/openresty/config/*.conf;
所有的配置文件存放在/usr/local/openresty/config/目录下。
b.另外,如果在测试环境中,为了在修改完lua代码之后立即生效,不需要执行nginx -s reload,可以在http{}块中添加lua_code_cache off;默认开启,表示缓存lua代码。
3、nginx+lua开发
(1)流程:
a).接收请求
nginx配置文件
在/usr/local/openresty/config/目录下创建xxx.conf文件,名字随意。
hello.conf
server {
listen 80;
server_name xxx.xxx.xxx.xxx;
access_log /var/log/hello_access_80.log main;
location /hello {
default_type "text/html";
#接收到请求后,hello.lua做处理
content_by_lua_file /usr/local/openresty/lua/hello.lua;
}
}
对外提供的接口为http://xxx.xxx.xxx.xxx/hello
b).处理请求
hello.lua
local uri_args = ngx.req.get_uri_args()
for k, v in pairs(uri_args) do
ngx.say(k, ": ", v, "<br/>")
end
ngx.say("hello")
表示获取请求参数。以k:v方式输出。
c).获取响应
浏览器:http://xxx.xxx.xxx.xxx/hello?instance=100¶ms=test
params: test
instance: 100
hello
(2)常用API
1、基础API
a).ngx.var: nginx变量
案例:
nginx配置文件:
location /var {
default_type "text/html";
set $a 1;
set $b 2;
content_by_lua_file /data/local/openresty/lua/var.lua;
}
lua文件:<