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!。