OpenResty 入门教程
OpenResty 是一款基于 Nginx 和 Lua 的高性能 Web 框架,可以方便地基于 Nginx 进行二次开发,以实现超高并发 Web 网关,Web 服务等。
本文讲述如何在 Linux 安装和使用 OpenResty。
安装 OpenResty
OpenResty 官方提供源代码编译安装以及二进制包安装方式,本文采用源代码编译安装方式。有关二进制包安装方式,可以参考链接 https://openresty.org/cn/linux-packages.html。
在 OpenResty 下载页面 下载最新版本的 OpenResty,这里笔者下载的是 openresty-1.19.3.1.tar.gz
。
然后依次执行命令:
1 | tar zxvf openresty-1.19.3.1.tar.gz |
注意执行 make install
需要 root 权限。
可以看到 OpenResty 被默认安装到了 /usr/local/openresty/
目录。
启动 Nginx
创建目录 openresty
(/home/lihao/code/openresty
),接下来的实验都在这个目录进行,然后执行:
1 | cd openresty |
其中,conf
目录用于存放 Nginx 配置文件,logs
目录用于存放 Nginx 日志文件。在 conf
目录创建 nginx.conf
文件:
1 | worker_processes 1; |
其中 ngx.say("<p>hello, world</p>")
用于在浏览器输出 hello, world
。
启动 Nginx:
1 | cd /home/lihao/code/openresty |
其中:
-p
:设置前缀路径-c
:设置配置文件
打开浏览器,地址栏输入 http://10.88.115.137:9080/
,可以看到页面输出 hello, world
。
这时,进入 logs
目录,可以看到日志和 pid 文件:
1 | logs/ |
独立 Lua 源代码文件
上面的 Lua 代码直接写在 Nginx 配置文件里面,当代码多了后不好维护,可以将 Lua 代码保存成独立文件。
在 openresty
目录下创建 lua
目录,然后在 lua
目录创建 hello.lua
文件:
1 | ngx.say("<p>hello, world from lua src</p>") |
调整 nginx.conf
配置:
1 | worker_processes 1; |
其中, location ~ /lua/(.+)
用于动态匹配 url,content_by_lua_file lua/$1.lua;
用于指明 Lua 文件位置。
重启 Nginx ,即,kill
master 进程后执行:
1 | /usr/local/openresty/nginx/sbin/nginx -p `pwd`/ -c conf/nginx.conf |
打开浏览器,访问 http://10.88.115.137:9080/lua/hello
,可以看到页面输出 hello, world from lua src
。
获取请求参数
接下来实现一个稍复杂一点的例子,提取客户端请求 name
参数,并打印出来。
创建 lua/req.lua
文件,提供 get_args
函数,用于提取请求参数:
1 | local _M = {} |
创建 lua/test.lua
,通过调用 get_args
函数,提取 name
参数值:
1 | -- 引入 req 模块 |
修改 nginx.conf
:
1 | worker_processes 1; |
其中,lua_package_path "/home/lihao/code/openresty/lua/?.lua;;";
用于指定引入模块的路径。
重启 Nginx,打开浏览器,输入 http://10.88.115.137:9080/lua/test?name=Leo
,可以看到输出 hello Leo!
。