ngx_lua将lua嵌入到nginx,让nginx执行lua脚本,高并发,非阻塞的处理各种请求。
url请求nginx服务器,然后lua查询redis,返回json数据。
备注:centos或者redhat系统请跳转到nginx + ngx_lua安装测试
一.安装lua
1
2
3
|
# apt-get install lua5.1
# apt-get install liblua5.1-dev
# apt-get install liblua5.1-socket2
|
二.安装nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# apt-get install git-core
# git clone https://github.com/simpl/ngx_devel_kit.git
# git clone https://github.com/chaoslawful/lua-nginx-module.git
# git clone https://github.com/agentzh/redis2-nginx-module.git
# git clone https://github.com/agentzh/set-misc-nginx-module.git
# git clone https://github.com/agentzh/echo-nginx-module.git
# git clone https://github.com/catap/ngx_http_upstream_keepalive.git
# apt-get install libpcre3 libpcre3-dev libltdl-dev libssl-dev libjpeg62 libjpeg62-dev libpng12-0 libpng12-dev libxml2-dev libcurl4-openssl-dev libmcrypt-dev autoconf libxslt1-dev libgd2-noxpm-dev libgeoip-dev libperl-dev -y
# wget http://nginx.org/download/nginx-1.0.8.tar.gz
# tar zxvf nginx-1.0.8.tar.gz
# cd nginx-1.0.8
# ./configure --prefix=/usr/local/nginx --with-debug --with-http_addition_module \
--with-http_dav_module--with-http_flv_module--with-http_geoip_module\
--with-http_gzip_static_module--with-http_image_filter_module--with-http_perl_module\
--with-http_random_index_module--with-http_realip_module--with-http_secure_link_module\
--with-http_stub_status_module--with-http_ssl_module--with-http_sub_module\
--with-http_xslt_module--with-ipv6--with-sha1=/usr/include/openssl\
--with-md5=/usr/include/openssl--with-mail--with-mail_ssl_module\
--add-module=../ngx_devel_kit\
--add-module=../echo-nginx-module\
--add-module=../lua-nginx-module\
--add-module=../redis2-nginx-module\
--add-module=../ngx_http_upstream_keepalive\
--add-module=../set-misc-nginx-module
# make
# make install
|
三.安装lua-redis-parser
1
2
3
4
|
# git clone https://github.com/agentzh/lua-redis-parser.git
# export LUA_INCLUDE_DIR=/usr/include/lua5.1
# make CC=gcc
# make install CC=gcc
|
四.安装json
1
2
3
|
# wget http://files.luaforge.net/releases/json/json/0.9.50/json4lua-0.9.50.zip
# unzip json4lua-0.9.50.zip
# cp json4lua-0.9.50/json/json.lua /usr/share/lua/5.1/
|
五.安装redis-lua
1
2
|
# git clone https://github.com/nrk/redis-lua.git
# cp redis-lua/src/redis.lua /usr/share/lua/5.1/
|
六.配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
user www-data;
worker_processes8;
worker_cpu_affinity0000000100000010000001000000100000010000001000000100000010000000;
error_log logs/error.log notice;
pid logs/nginx.pid;
worker_rlimit_nofile60000;
events{
worker_connections1024;
useepoll;
}
http{
include mime.types;
default_type application/octet-stream;
access_log logs/access.log;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout60;
types_hash_max_size2048;
server_tokens off;
lua_code_cache on;
upstreamredis_pool{
server192.168.1.39:6379;
keepalive1024single;//定义连接池大小,当连接数达到此数后,后续的连接为短连接
}
server{
listen80;
server_name192.168.1.211;
location/get_redis{
#internal;
set_unescape_uri$key$arg_key;
redis2_query hgetall$key;
redis2_pass redis_pool;
}
location/json{
content_by_lua_file conf/fuck.lua;
}
}
}
|
# vim fuck.lua
1
2
3
4
5
6
7
8
9
10
11
12
|
local json=require("json")
local parser=require("redis.parser")
local res=ngx.location.capture("/get_redis",{
args={key=ngx.var.arg_key}
})
ifres.status==200then
reply=parser.parse_reply(res.body)
value=json.encode(reply)
ngx.say(value)
a=json.decode(value)
ngx.say(a[2])
end
|
七.测试
# redis-cli -h 192.168.1.39
1
2
3
|
redis192.168.1.39:6379>HMSET ttlsa www www.ttlsa.com mail mail.ttlsa.com
OK
|
# curl 'http://192.168.1.211/json?key=ttlsa'
1
|
["www","www.ttlsa.com","mail","mail.ttlsa.com"]
|
www.ttlsa.com
相关推荐
在构建高性能、高可用性的Web服务时,常常会利用到Nginx作为反向代理和负载均衡器,Lua作为扩展Nginx功能的脚本语言,而Redis则作为内存数据存储,提供快速的数据访问。本资源包“nginx+lua+redis集群 连接插件和...
本文将深入探讨如何利用`nginx+lua+redis`来实现`token`验证,以确保只有经过授权的用户才能访问受保护的资源。 首先,让我们理解`token`验证的基本原理。`token`验证是一种身份验证机制,它允许客户端通过提供一个...
nginx+lua+redis通过匹配客户端ip进行灰度发布 本文将讲述如何使用nginx、lua和redis来实现灰度发布,通过匹配客户端IP来实现灰度发布。灰度发布是一种常见的软件发布方式,它允许开发者在生产环境中发布新的版本,...
本文介绍如何用Nginx+Lua+Redis来构建高并发Web应用,Curl请求Nginx,Nginx通过Lua查询Redis,返回json数据。 一、安装1、安装lua-redis-parser 代码如下:#git clone ...
最近有个需求是需要用nginx播放服务器的视频,考虑安全问题,需要在nginx加个lua去取redis的token进行验证,刚开始访问测试环境单机还挺好用,可是要访问生产的是集群环境,找了多了资料趟了数不尽的坑,最终形成这...
"Nginx、Lua、Redis 和 Json 的结合应用" Nginx 是一个高性能的 ...本文介绍了如何使用 Nginx、Lua、Redis 和 Json 来构建一个高效的系统,能够处理高并发的请求,并提供了丰富的功能和模块来满足大多数的应用场景。
提到高并发或者抗压力,有这种高qps经验的同学第一反应大都是Nginx+lua+Redis,网上也满天非那种高并发架构方案大都是这种,但是Nginx+lua来做接入层到底是怎么抗住压力的呢?本篇顺序:1、Nginx如何抗住的高并发,...
在构建高性能、高可用性的Web服务时,`nginx`是一个常用的选择,因为它具有出色的静态文件处理能力和反向代理功能。而结合`lua`脚本语言和`redis`内存数据库,可以实现灵活的数据交互和动态逻辑处理。在这个场景下,...
《构建高性能Web服务:Nginx、Lua与Redis的整合应用》 在现代Web服务的构建中,Nginx、Lua和Redis已经成为一种高效的组合,它们各自承担着不同的角色,共同构建出高并发、低延迟的系统。Nginx作为前端服务器,负责...
软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发Node.js、C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、...
### 京东李开涛 跟我学Nginx+Lua 开发 #### 知识点一:Nginx+Lua 在Web高并发中的实践应用 - **背景介绍**:随着互联网技术的...对于任何希望构建高性能Web应用的技术团队而言,这都是一个值得学习和借鉴的优秀案例。
借助于Nginx的事件驱动模型和非阻塞IO,可以实现高性能的Web应用程 序。而且OpenResty提供了大量组件如Mysql、Redis、Memcached等等,使在Nginx上开发Web应用更方便更简单。目前在京东如实时价格、秒杀、动态服务、...
OpenResty+Lua+Redis 高性能后端接口 OpenResty 是基于 Nginx 的高性能 web 服务器,它使用 Lua 语言作为脚本语言来实现动态内容生成和处理。 Lua 是一种轻量级的脚本语言,广泛应用于游戏、嵌入式系统和 web 开发...
OpenResty是基于Nginx与LuaJIT的一个高性能Web平台,它以标准Nginx核心,集成了大量的精心设计的Nginx模块,主要包括:ngxLua模块、MySQL模块、Redis模块、Memcached模块等。这些模块使得开发者能够在Nginx内直接...
### Nginx+Lua开发环境搭建与应用 #### 一、Nginx+Lua开发...通过以上步骤,读者可以系统地学习如何利用Nginx+Lua构建高性能的Web应用。无论是初学者还是有一定经验的开发者,都能够从中获得宝贵的知识和实践经验。
本文给大家介绍的是Nginx利用Lua+Redis实现动态封禁IP的方法,下面话不多说了,来一起看看详细的介绍吧 二、架构 实现 IP 黑名单的功能有很多途径: 1、在操作系统层面,配置 iptables,拒绝指定 IP 的网络请求; 2...
本文以京东商品详情页为例,探讨了其后端架构使用Nginx+Lua技术的实践,以及如何在大规模应用中优化服务架构和提高系统性能。 一、商品详情页概述 京东商品详情页涵盖多种购物场景,包括通用版、闪购、全球购、服装...
在构建高性能服务器架构时,`Lua`、`Redis` 和 `Nginx` 的结合使用是一种常见的技术方案。本文将详细探讨这三个组件及其在构建高效系统中的作用。 首先,`Lua` 是一种轻量级的脚本语言,以其简洁的语法、高效的执行...