如何定义一个nginx lua函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何定义一个nginx lua函数相关的知识,希望对你有一定的参考价值。

参考技术A HTTP请求是指从客户端到服务器端的请求消息。包括:消息首行中,对资源的请求方法、资源的标识符及使用的协议。从客户端到服务器端的请求消息包括,消息首行中,对资源的请求方法、资源的标识符及使用的协议。HTTP请求信息由3部分组成:l请求方法URI协议/版本l请求头(RequestHeader)l请求正文HTTP响应HTTP应答与HTTP请求相似,HTTP响应也由3个部分构成,分别是:l 状态行l 响应头(ResponseHeader)l 响应正文在接收和解释请求消息后,服务器会返回一个HTTP响应消息。状态行由协议版本、数字形式的状态代码、及相应的状态描述,各元素之间以空格分隔。格式:HTTP-VersionStatus-CodeReason-PhraseCRLF本回答被提问者采纳

nginx lua 安装

Nginx安装lua-nginx-module模块

ngx_lua_module 是一个nginx http模块,它把 lua 解析器内嵌到 nginx,用来解析并执行lua 语言编写的网页后台脚本

特性很牛叉,可自行百度查看,这里主要是示范一下,如何在Nginx下安装lua-nginx-module模块

当然,如果你之前没有安装过Nginx,而且嫌安装麻烦,可直接下载openresty安装简单快捷,http://openresty.org/cn/installation.html(阿里的大牛章亦春的作品,膜拜~~~)

1.下载安装LuaJIT 2.1(2.0或者2.1都是支持的,官方推荐2.1):http://luajit.org/download.html

cd /usr/local/src
wget http://luajit.org/download/LuaJIT-2.1.0-beta2.tar.gztar zxf LuaJIT-2.1.0-beta2.tar.gz
cd LuaJIT-2.1.0-beta2make PREFIX=/usr/local/luajit
make install PREFIX=/usr/local/luajit123456123456

2.下载ngx_devel_kit(NDK)模块 :https://github.com/simpl/ngx_devel_kit/tags,不需要安装

cd /usr/local/src
wget https://github.com/simpl/ngx_devel_kit/archive/v0.2.19.tar.gztar -xzvf v0.2.19.tar.gz123123

3.下载最新的lua-nginx-module 模块 :https://github.com/openresty/lua-nginx-module/tags,不需要安装

cd /usr/local/src
wget https://github.com/openresty/lua-nginx-module/archive/v0.10.2.tar.gztar -xzvf v0.10.2.tar.gz123123

4.nginx -V查看已经编译的配置

nginx -V11

笔者的配置如下:

./configure  --prefix=/wls/applications/nginx-1.8.1 --with-cc-opt=‘-DNGX_LUA_USE_ASSERT -DNGX_LUA_ABORT_AT_PANIC‘ --with-threads --with-http_realip_module --with-http_addition_module --with-http_stub_status_module --with-http_ssl_module --with-http_dav_module --with-pcre=../pcre-8.38 --with-zlib=../zlib-1.2.8 --add-module=../nginx_upstream_check_module-master --add-module=../ngx_http_substitutions_filter_module-0.6.4 --add-module=../ngx_devel_kit-0.2.19 --add-module=../lua-nginx-module-0.10.2

5.进入之前安装nginx的解压目录,重新编译安装(在nginx -V得到的配置下,加入ngx_devel_kit-0.2.19和ua-nginx-module-0.10.2的目录),最终的配置如下:

设置环境变量

export LUAJIT_LIB=/usr/local/luajit/libexport LUAJIT_INC=/usr/local/luajit/include/luajit-2.11212
./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-ipv6 --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-openssl=../openssl-1.0.2h --with-pcre=../pcre-8.38 --with-pcre-jit --with-ld-opt=‘-ljemalloc‘ --with-ld-opt="-Wl,-rpath,/usr/local/luajit/lib" --add-module=/usr/local/src/ngx_devel_kit-0.2.19 --add-module=/usr/local/src/lua-nginx-module-0.10.211

6.编译安装

make -j2make install1212

7.查看是否编译成功

在/usr/local/nginx/conf/nginx.conf中加入如下代码:

location /hello_lua { 
      default_type ‘text/plain‘; 
      content_by_lua ‘ngx.say("hello, lua")‘; 
}

重启nginx:

service nginx restart11

访问10.211.55.3/hello_lua会出现”hello, lua”表示安装成功

hello, lua


以上是关于如何定义一个nginx lua函数的主要内容,如果未能解决你的问题,请参考以下文章

Nginx-ngx_lua模块原理和内置函数

Lua - 使用定义的更多参数调用函数

Nginx与Lua自定义反向代理

如何通过 nginx 将路径参数传递给 lua 代码?

lua怎么定义数组

如何在 Lua 函数上应用元表以启用它们之间的自定义运算符?