Ngx_lua

@date: 2019-3-25 23:00:15


简介

ngx_lua 指的是 lua-nginx-module模块:通过将 LuaJIT 的虚拟机嵌入到 Nginx 的 worker 中,这样既保持高性能,又能不失去lua开发的简单特性。

OpenResty 就是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。OpenResty 基于Nginx开发,可以简单认为是 Nginx + lua-nginx-module的组合版。

官网:https://openresty.org/cn/
官方文档:https://github.com/openresty/lua-nginx-module

Hello World

OpenResty 安装

以 CentOS 为例:

mkdir /opt && cd /opt

# download openresty
wget https://openresty.org/download/openresty-1.13.6.2.tar.gz

tar zxvf openresty-1.13.6.2.tar.gz
cd openresty-1.13.6.2

# configure
./configure --prefix=/usr/local/openresty -j4

make -j4 && make install

其中 源码包可以到 https://openresty.org/cn/download.html 该页面获取。 -j4表示使用4核。configure那一步还可以指定各种参数:

./configure --prefix=/usr/local/openresty \
            --with-luajit \
            --without-http_redis2_module \
            --with-http_iconv_module \
            --with-http_postgres_module

使用 ./configure --help 查看更多的选项。

其它系统环境上安装可以参考 https://openresty.org/cn/installation.html 。

其实安装 OpenResty 和安装 Nginx 是类似的,因为 OpenResty 是基于 Nginx 开发的。

如果已经安装了 Nginx,又想使用 OpenResty 的功能,可以参考 《Nginx编译安装Lua》:https://www.cnblogs.com/52fhy/p/10164553.html 一文安装lua-nginx-module模块即可。

第一个程序

修改 /usr/local/openresty/nginx/conf/nginx.conf:

worker_processes  1;
error_log logs/error.log;
events {
    worker_connections 1024;
}
http {
    server {
        listen 8080;
        location /hello {
            default_type text/html;
            content_by_lua '
                ngx.say("<p>hello, world</p>")
            ';
        }
    }
}

把默认的80端口改为8080,新增/hello部分。

其中content_by_lua便是 OpenResty 提供的指令,在官方文档可以搜索到:

现在我们启动OpenResty:

/usr/local/openresty/nginx/sbin/nginx

启动成功后,查看效果:

curl http://127.0.0.1:8080/hello
<p>hello, world</p>

说明成功运行了。

参考

1、OpenResty® - 中文官方站
https://openresty.org/cn/
2、openresty/lua-nginx-module: Embed the Power of Lua into NGINX HTTP servers
https://github.com/openresty/lua-nginx-module#version
3、环境搭建 · OpenResty最佳实践
https://moonbingbing.gitbooks.io/openresty-best-practices/content/openresty/install.html