nginx安装lua模块实现高并发
nginx安装lua扩展模块
1.下载安装LuaJIT-2.0.4.tar.gz
wget -c http://luajit.org/download/LuaJIT-2.0.4.tar.gz
tar xzvf LuaJIT-2.0.4.tar.gz
cd LuaJIT-2.0.4
make install PREFIX=/usr/local/luajit
#注意环境变量!
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0
2.下载解压ngx_devel_kit
wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
tar -xzvf v0.3.0.tar.gz
3.下载解压lua-nginx-module
wget https://github.com/openresty/lua-nginx-module/archive/v0.10.8.tar.gz
tar -xzvf v0.10.8.tar.gz
4.下载安装nginx-1.10.3.tar.gz
wget http://nginx.org/download/nginx-1.10.3.tar.gz
tar -xzvf nginx-1.10.3.tar.gz
cd nginx-1.10.3
./configure --add-module=/opt/soft/ngx_devel_kit-0.3.0 --add-module=/opt/soft/lua-nginx-module-0.10.8
#注意ngx_devel_kit和lua-nginx-module以实际解压路径为准
make -j2
make install
注:报错gcc需要安装,可以执行
yum install -y gcc g++ gcc-c++
依赖报错,可以执行
yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel
5.验证
#将nginx做成命令
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
cd /usr/local/nginx/conf/
vi nginx.conf
#lua指令方式
#在server 中添加一个localtion
location /hello {
default_type 'text/plain';
content_by_lua 'ngx.say("hello, lua")';
}
#lua文件方式
#在server 中添加一个localtion
location /lua {
default_type 'text/html';
content_by_lua_file conf/lua/test.lua; #相对于nginx安装目录
}
#test.lua文件内容
ngx.say("hello world");
#启动nginx(已经做了软连接了,可以在任何目录启动)
nginx
注:
报错nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory 可以执行
ln -s /usr/local/luajit/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2
具体source的路径已实际安装路径为准
window平台开发代码部署到Linux服务器
由于两个平台的不同导致脚本文件的编码类型不一致 部署后会出现一些诡异的问题
// :: [error] #: * failed to load external Lua file "/etc/nginx/lua/limit_reload.lua": /etc/nginx/lua/limit_reload.lua:: '=' expected near 'limitRuleStore', client: 192.168.11.134, server: localhost, request: "GET /limit/reload HTTP/1.1", host: "192.168.11.134:81"
异常现象
[root@localhost lua]# cat -A init_conf.lua
M-oM-;M-?--M-eM-.M-^ZM-dM-9M-^IM-eM-^EM-(M-eM-1M-^@M-eM-^OM-^XM-iM-^GM-^OM-oM-<M-^LM-iM-;M-^XM-hM-.M-$M-dM-;M-^NlualibM-iM-^GM-^LM-iM-^]M-"M-eM-^JM- M-hM-=M-=^M$
limit_req ^I= require "resty.limit.req"; ^M$
http ^I^I= require "resty.http";^M$
limitUtils ^I= require "limit_utils"; ^M$
limit_ntfy_url ^I^I= ^I"http://"..minigo_host.."/minigo/limitnotify/add";^M$ [root@localhost lua]# cat init_conf.lua
--定义全局变量,默认从lualib里面加载
limit_req = require "resty.limit.req";
http = require "resty.http";
limitUtils = require "limit_utils";
cjson = require "cjson"; [root@localhost lua]# file a.txt
a.txt: ASCII text
[root@localhost lua]# file init_conf.lua
init_conf.lua: UTF- Unicode (with BOM) text [root@hz-ds-itsgj--- lua]# file limit_main.lua
limit_main.lua: ISO- English text
[root@hz-ds-itsgj--- lua]# file limit_reload.lua
limit_reload.lua: ISO- text
[root@hz-ds-itsgj--- lua]#
查看文件编码
nginx安装lua模块实现高并发的更多相关文章
- nginx+lua+redis构建高并发应用(转)
nginx+lua+redis构建高并发应用 ngx_lua将lua嵌入到nginx,让nginx执行lua脚本,高并发,非阻塞的处理各种请求. url请求nginx服务器,然后lua查询redis, ...
- nginx 安装第三方模块(lua)并热升级
需求: nginx上将特定请求拒绝,并返回特定值. 解决办法: 使用lua脚本,实现效果. 操作步骤: 安装Luajit环境 重新编译nginx(目标机器上nginx -V 配置一致,并新增两个模块n ...
- Nginx使用Lua模块实现WAF
前言:最近一段时间在写加密数据功能,对安全相关知识还是缺少积累,无意间接触到了WAF相关知识,刚好Nginx可以实现WAF功能,也简单学习了Lua这门语言,分享下 一.WAF产生的背景 过去企业通常会 ...
- Nginx安装echo模块
echo-nginx-module 模块可以在Nginx中用来输出一些信息,可以用来实现简单接口或者排错. 项目地址:https://github.com/openresty/echo-nginx-m ...
- nginx + uWSGI 为 django 提供高并发
django 的并发能力真的是令人担忧,这里就使用 nginx + uwsgi 提供高并发 nginx 的并发能力超高,单台并发能力过万(这个也不是绝对),在纯静态的 web 服务中更是突出其优越的地 ...
- nginx利用limit模块设置IP并发防CC攻击
nginx利用limit模块设置IP并发防CC攻击 分类: 系统2013-01-21 09:02 759人阅读 评论(0) 收藏 举报 来源:http://blog.xencdn.net/nginx- ...
- vim编译安装+lua模块
vim编译安装+lua模块 使用背景:代码自动补全插件,需要安装lua模块 安装准备,首先下载安装vim所依赖的其它安装包,ncurses,lua,readline,vim 源码下载,编译安装 ncu ...
- 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 ...
随机推荐
- jQuery(三) javascript跨域问题(JSONP解决)
加油~ --WH 一.什么是javascript跨域问题? 域:服务器域名,唯一标识(协议,域名,端口)必须保证一致,说明域相同 跨域:在一个服务器上,去访问另一个服务器上,并且得到另一个服务器返回回 ...
- 系统编码,文件编码,python编码
系统编码,可以通过locale命令查看(LINUX)https://wiki.archlinux.org/index.php/Locale_(简体中文), centos7 配置文件在/etc/prof ...
- mysql数据字段整理
<?php header('content-type:text/html;charset=utf-8'); define('DB_HOST','127.0.01'); define('DB_US ...
- 导出jqgrid表格数据为EXCEL文件,通过tableExport.js插件。
今天公司项目需要做个导出功能,将jqgrid查询出的数据导出为EXCEL表格文件,期间遇到两个问题: 1.导出报错 uncaught exception: INVALID_CHARACTER_ERR: ...
- 外部访问docker容器(docker run -p/-P 指令)
容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P(大写) 或 -p (小写) 参数来指定端口映射. (1)当使用 -P 标记时,Docker 会随机映射一个 49000~4990 ...
- windows环境下redis启动加到服务中
前置条件: 1.命令运行在redis-server.exe目录下 2.cmd命令 安装命令: redis-server.exe --service-install redis.windows.co ...
- C# SQLite数据库
在客户端配置文件<configuration>节点下,添加: <connectionStrings> <add name="localdb" conn ...
- MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report e
早上来到公司,线上的项目报错: Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionExcepti ...
- 134、直接拿来用,Android界最火的开源项目
Android酷炫开源动框架2015-2016双年榜(转载) http://blog.csdn.net/u011200604/article/details/54428128 GitHub上受欢迎的A ...
- C# IO流的操作(二)
文件在操作系统中是以二进制(01)的形式保存到磁盘上的,在C#程序当中,我们可以通过读取流将文件读取到byte[]当中(读到内存中),也可以通过写入流将byte[]写入文件(保存到磁盘上).下面将演示 ...