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 ...
随机推荐
- nyoj 92 图片实用面积【bfs】
图像实用区域 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描写叙述 "ACKing"同学曾经做一个图像处理的项目时.遇到了一个问题,他须要摘取出图片中某 ...
- WPF编游戏系列 之八 银行界面及金额校验
原文:WPF编游戏系列 之八 银行界面及金额校验 在前面<WPF编游戏系列 之四 用户控件>一文中通过用户控件创建了"My Shop"中物品列表框.本篇继 ...
- 解压压缩文件报错gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now
压缩包是直接weget 后面加官网上的tar包地址获取的 [root@xuegod43 ~]# tar -zxvf /home/hadoop/hadoop-2.6.5-src.tar.gz gzip ...
- 利用FR导出PDF汉字乱码的处理
利用FR导出pdf,然后在unigui中显示,发现汉字乱码,改成gb2312,不乱码,但不自动折行,最后是改成DefaultCharSet搞定.FR版本:5.4.6 后记:有的浏览器中还是乱码,把字体 ...
- WPF获取某控件的位置,也就是偏移量
原文:WPF获取某控件的位置,也就是偏移量 此段示例在MSDN中可见.XAML代码如下: <Window xmlns="http://schemas.microsoft.com/win ...
- 【msdn wpf forum翻译】TextBox中文本 中对齐 的方法
原文:[msdn wpf forum翻译]TextBox中文本 中对齐 的方法 原文链接:http://social.msdn.microsoft.com/Forums/en-US/wpf/threa ...
- 关于SetLength报Out of memory的研究及解决办法
关于SetLength报Out of memory的研究及解决办法 最近在做一个GIS系统, 在读GIS数据时采用了动态数组,突然读一个数据时SetLength报错!Out of memory 仔细研 ...
- 谷歌将为 Mac 和 Windows 用户推出新的备份和同步应用
据报道,谷歌将于 6 月 28 日面向 Mac 和 Windows 用户发布一款新的备份和同步应用(Backup and Sync app). Google 刚刚宣布将推出其备份和同步应用程序,该工具 ...
- Win8Metro(C#)数字图像处理--2.16图像浮雕效果
原文:Win8Metro(C#)数字图像处理--2.16图像浮雕效果 [函数名称] 图像浮雕效果函数ReliefProcess(WriteableBitmap src) [函数代码] ...
- 【Gerrit】Add a Member
add user email:XXXX@163.com username:XXXX( songfei) Add Step: System Server:1. ssh 服务器用户 ...