Nginx添加Lua扩展模块
Nginx添加Lua扩展模块
编译安装LuaJIT
wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz
tar xf LuaJIT-2.0..tar.gz
cd LuaJIT-2.0.
make PREFIX=/usr/local/luajit
make install PREFIX=/usr/local/luajit
下载扩展模块
cd /usr/local/src/
wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
tar -xf v0.3.0.tar.gz wget https://github.com/openresty/lua-nginx-module/archive/v0.10.8.tar.gz
tar xf v0.10.8.tar.gz
编辑安装nginx
yum groupinstall -y "Development Tools"
yum install -y libxml2-devel curl-devel pcre-devel openssl-devel siege traceroute vim openssl
cd /usr/local/src
wget http://nginx.org/download/nginx-1.10.3.tar.gz
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0
tar xf nginx-1.10..tar.gz && cd nginx-1.10.
./configure \
--prefix=/usr/local/nginx-1.10. \ # nginx安装目录
--with-http_ssl_module \ # 支持 SSL
--with-http_stub_status_module \ # nginx状态模块
--add-module=/usr/local/src/ngx_devel_kit-0.3. \ # lua模块
--add-module=/usr/local/src/lua-nginx-module-0.10. # lua扩展模块
make && make install
mkdir /usr/local/nginx-1.10./conf/vhost
ln -s /usr/local/nginx-1.10./sbin/nginx /bin/nginx
编译安装nginx
重新编译nginx
# 查看之前的编译参数
nginx -V # 设置环境变量
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0 # 进入源码包目录
cd /opt/software/nginx-1.10./
./configure \
--prefix=/usr/local/nginx-1.10. \ # nginx安装目录
--with-http_ssl_module \ # 支持 SSL
--with-http_stub_status_module \ # nginx状态模块
--add-module=/usr/local/src/ngx_devel_kit-0.3. \ # lua模块
--add-module=/usr/local/src/lua-nginx-module-0.10. # lua扩展模块
make
make install
遇到的报错:
# nginx -t
nginx: error while loading shared libraries: libluajit-5.1.so.: cannot open shared object file: No such file or directory # 解决: 查找文件,创建软连接
find / -name "libluajit-5.1.so.2"
ln -s /usr/local/lib/libluajit-5.1.so. /lib64/
第一个lua脚本
在server块中添加
location /lua { default_type 'text/html'; content_by_lua_file conf/lua/test.lua; # 相对于nginx安装目录 }
# 编写lua脚本
[root@yunwei-test conf]# pwd
[root@yunwei-test conf]# /usr/local/nginx-1.10./conf
[root@yunwei-test conf]# mkdir lua && cd lua
[root@yunwei-test conf]# vim test.lua
ngx.say("hello world"); # 启动nginx
[root@yunwei-test conf]# nginx -t
[root@yunwei-test conf]# nginx 浏览器访问:10.0.3.56/lua
显示 hello world,表示正常
nginx + lua获取url请求参数
有个需求就是获取 url 中 clientId 参数的值,根据clientid中的参数upstream到不同服务器,url有GET和POST请求。
代码如下:
upstream sdk_proxy {
server 127.0.0.1:;
keepalive ;
}
upstream default_sdk {
server 127.0.0.1:;
keepalive ;
}
server {
listen ;
server_name 127.0.0.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
default_type text/plain;
access_by_lua '
local request_method = ngx.var.request_method
local clientids = {"","",""}
if (request_method == "GET") then
local arg = ngx.req.get_uri_args()["clientId"] or
for i,clientid in ipairs(clientids) do
if (arg == clientid) then
ngx.exec("@sdk")
end
end
elseif (request_method == "POST") then
ngx.req.read_body()
local arg = ngx.req.get_post_args()["clientId"] or
for i,clientid in ipairs(clientids) do
if (arg == clientid) then
ngx.exec("@sdk")
end
end
end
';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://default_sdk;
}
location @sdk {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://sdk_proxy;
}
}
参考:
https://segmentfault.com/q/1010000011130967
Nginx添加Lua扩展模块的更多相关文章
- nginx安装lua模块实现高并发
nginx安装lua扩展模块 1.下载安装LuaJIT-2.0.4.tar.gz wget -c http://luajit.org/download/LuaJIT-2.0.4.tar.gz tar ...
- nginx添加编译lua模块
一 .安装LuaJit 1.下载LuaJit # wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz 2.编译安装 # tar xzvf LuaJI ...
- Nginx 整合 Lua 实现动态生成缩略图
原文地址:Nginx 整合 Lua 实现动态生成缩略图 博客地址:http://www.extlight.com 一.前提 最近在开发一个项目,涉及到缩略图的功能,常见的生成缩略图的方案有以下几个: ...
- openresty(nginx)、lua、drizzle调研
一.概述: 1.研究目标:nginx中使用lua脚本,及nginx直接访问mysql,redis 2.需要安装的内容: openresty,mysql,redis 3.OpenResty (也称为 n ...
- Nginx安装lua支持
Nginx安装lua支持 需要LuaJIT-2.0.4.tar.gz,ngx_devel_kit,lua-nginx-module 1.下载安装LuaJIT-2.0.4.tar.gz wget -c ...
- 11: Nginx安装lua支持
1.1 Nginx 使用lua脚本 注:需要LuaJIT-2.0.4.tar.gz,ngx_devel_kit,lua-nginx-module 1.Nginx安装lua支持 wget -c http ...
- Nginx利用lua剪辑FastDFS图片
Nginx利用lua剪辑FastDFS中的图片 我们经常用FastDFS来做图片服务器,通过nginx来上传或者获取图片.本文要实现的功能是,当客户端要获取不同尺寸的图片是,lua根据url中的尺寸大 ...
- nginx 与 lua 开发笔记
Nginx入门 本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章: nginx启动.关闭.重启 http://www.cnblogs.com/derekchen/archi ...
- 使用openresty + lua 搭建api 网关(一)安装openresty ,并添加lua模块
openresty 有点不多说,网上各种介绍,先安装吧. 官方操作在此,http://openresty.org/cn/installation.html, tar -xzvf openresty-V ...
随机推荐
- Bootstrap Edit 使用方法
Getting Started <!-- rounded edit text --> <com.beardedhen.androidbootstrap.BootstrapEditTe ...
- 【Android发展】它Fragment发展1
一直知道Fragment非常强大.可是一直都没有去学习,如今有些空暇的时间,所以就去学习了一下Fragment的简单入门.我也会把自己的学习过程写下来,假设有什么不足的地方希望大牛指正,共同进步. 一 ...
- WPF: FishEyePanel/FanPanel - 自定义Panel
原文:WPF: FishEyePanel/FanPanel - 自定义Panel 原文来自CodeProject,主要介绍如何创建自定义的Panel,如同Grid和StackPanel. 1) Int ...
- Symbol not found: _lua_objlen
lua: error loading module 'cjson' from file '/usr/local/lib/lua/5.3/cjson.so': dlopen(/usr/local/lib ...
- XF 列表视图分组列表填充
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- 投资人的能量往往大多远远不仅于此,他能站在不同的角度和高度看问题(要早点拿投资,要舍得让出股份)——最好不要让 Leader 一边做技术、一边做管理,人的能力是有限的,精力也是有限的
摘要:在创业三年时间里作为联合创始人,虽然拿着大家均等的股份,我始终是没有什么话语权的,但是,这也给了我从旁观者的角度看清整个局面的机会.创业公司的成败绝大程度取决于技术大牛和公司 Leader, ...
- Gralde 同步失败
Gralde 同步失败 尝试了各种方法,至少我觉得常见的一些方法我都尝试了.但一直下载依赖失败 > Could not resolve all files for configuration ' ...
- Grokking PyTorch
原文地址:https://github.com/Kaixhin/grokking-pytorch PyTorch is a flexible deep learning framework that ...
- mysql索引创建&查看&删除
1.索引作用 在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率.特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍. 例如,有 ...
- DataTable 更改在有数据列的类型方法
原文:DataTable 更改在有数据列的类型方法 /// <summary> /// 修改数据表DataTable某一列的类型和记录值(正确步骤:1.克隆表结构,2.修改列类型,3.修改 ...