`

nginx:nginx+lua+redis构建高并发应用

阅读更多
一.安装lua
# apt-get install lua5.1
# apt-get install liblua5.1-dev
# apt-get install liblua5.1-socket2

二.安装nginx
# 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
# 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
# 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
# git clone https://github.com/nrk/redis-lua.git
# cp redis-lua/src/redis.lua /usr/share/lua/5.1/

六.配置


user www-data;
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
error_log logs/error.log notice;
pid logs/nginx.pid;
worker_rlimit_nofile 60000;

events {
worker_connections 1024;
use epoll;

}

http {
include mime.types;
default_type application/octet-stream;
access_log logs/access.log;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 60;
types_hash_max_size 2048;
server_tokens off;
lua_code_cache on;

upstream redis_pool {
server 192.168.1.39:6379;
keepalive 1024 single; //定义连接池大小,当连接数达到此数后,后续的连接为短连接

}

server {
listen 80;
server_name 192.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
local json = require("json")
local parser = require("redis.parser")
local res = ngx.location.capture("/get_redis",{
args = { key = ngx.var.arg_key }
})
if res.status == 200 then
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

redis 192.168.1.39:6379> HMSET ttlsa www www.ttlsa.com mail mail.ttlsa.com
OK

# curl 'http://192.168.1.211/json?key=ttlsa'

["www","www.ttlsa.com","mail","mail.ttlsa.com"]
1

分享到:
评论

相关推荐

    nginx+lua+redis 集群 连接插件和脚本

    在构建高性能、高可用性的Web服务时,常常会利用到Nginx作为反向代理和负载均衡器,Lua作为扩展Nginx功能的脚本语言,而Redis则作为内存数据存储,提供快速的数据访问。本资源包“nginx+lua+redis集群 连接插件和...

    nginx+lua+redis实现token验证

    本文将深入探讨如何利用`nginx+lua+redis`来实现`token`验证,以确保只有经过授权的用户才能访问受保护的资源。 首先,让我们理解`token`验证的基本原理。`token`验证是一种身份验证机制,它允许客户端通过提供一个...

    nginx+lua+redis通过匹配客户端ip进行灰度发布

    nginx+lua+redis通过匹配客户端ip进行灰度发布 本文将讲述如何使用nginx、lua和redis来实现灰度发布,通过匹配客户端IP来实现灰度发布。灰度发布是一种常见的软件发布方式,它允许开发者在生产环境中发布新的版本,...

    Nginx+Lua+Redis构建高并发Web应用

    本文介绍如何用Nginx+Lua+Redis来构建高并发Web应用,Curl请求Nginx,Nginx通过Lua查询Redis,返回json数据。 一、安装1、安装lua-redis-parser 代码如下:#git clone ...

    Nginx+Lua+Redis+Json

    "Nginx、Lua、Redis 和 Json 的结合应用" Nginx 是一个高性能的 ...本文介绍了如何使用 Nginx、Lua、Redis 和 Json 来构建一个高效的系统,能够处理高并发的请求,并提供了丰富的功能和模块来满足大多数的应用场景。

    nginx+lua+redis黑名单加载

    在构建高性能、高可用性的Web服务时,`nginx`是一个常用的选择,因为它具有出色的静态文件处理能力和反向代理功能。而结合`lua`脚本语言和`redis`内存数据库,可以实现灵活的数据交互和动态逻辑处理。在这个场景下,...

    nginx+lua+redis.rar

    《构建高性能Web服务:Nginx、Lua与Redis的整合应用》 在现代Web服务的构建中,Nginx、Lua和Redis已经成为一种高效的组合,它们各自承担着不同的角色,共同构建出高并发、低延迟的系统。Nginx作为前端服务器,负责...

    linux 实现nginx+Lua 访问redis集群

    最近有个需求是需要用nginx播放服务器的视频,考虑安全问题,需要在nginx加个lua去取redis的token进行验证,刚开始访问测试环境单机还挺好用,可是要访问生产的是集群环境,找了多了资料趟了数不尽的坑,最终形成这...

    2 OpenResty+Lua+Redis 高性能后端接口.docx

    OpenResty+Lua+Redis 高性能后端接口 OpenResty 是基于 Nginx 的高性能 web 服务器,它使用 Lua 语言作为脚本语言来实现动态内容生成和处理。 Lua 是一种轻量级的脚本语言,广泛应用于游戏、嵌入式系统和 web 开发...

    lua+redis+nginx

    在构建高性能服务器架构时,`Lua`、`Redis` 和 `Nginx` 的结合使用是一种常见的技术方案。本文将详细探讨这三个组件及其在构建高效系统中的作用。 首先,`Lua` 是一种轻量级的脚本语言,以其简洁的语法、高效的执行...

    Nginx利用Lua+Redis实现动态封禁IP的方法

    本文给大家介绍的是Nginx利用Lua+Redis实现动态封禁IP的方法,下面话不多说了,来一起看看详细的介绍吧 二、架构 实现 IP 黑名单的功能有很多途径: 1、在操作系统层面,配置 iptables,拒绝指定 IP 的网络请求; 2...

    高并发Nginx+lua是如何抗住的

    提到高并发或者抗压力,有这种高qps经验的同学第一反应大都是Nginx+lua+Redis,网上也满天非那种高并发架构方案大都是这种,但是Nginx+lua来做接入层到底是怎么抗住压力的呢?本篇顺序:1、Nginx如何抗住的高并发,...

    OpenResty+Lua+Redis 高性能后端接口.rar

    OpenResty、Lua和Redis是构建高性能后端接口的关键技术,它们在现代Web服务开发中扮演着重要角色。本文将深入探讨这三个组件及其在构建高效系统中的应用。 首先,OpenResty是一个基于Nginx的全功能Web服务平台,它...

    nginx+lua+php+redis实现单业务排队系统架构.zip

    软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发Node.js、C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、...

    基于CentOS 7 web服务环境搭建(包含JDK+Nginx+Tomcat+Mysql+Redis)-附件资源

    基于CentOS 7 web服务环境搭建(包含JDK+Nginx+Tomcat+Mysql+Redis)-附件资源

    lua版waf web防火墙 redis+nginx版

    在本项目中,需要使用OpenResty版本的Nginx,OpenResty是一个集成LuaJIT的Nginx发行版,允许开发者使用Lua语言直接在Nginx中编写高性能的网络应用。结合lua版WAF,Nginx可以解析HTTP请求,然后将这些请求传递给Lua...

    nginx实战-基于lua语言

    通过深入理解Nginx与Lua的结合,开发者可以构建出更加灵活、高效的Web服务,满足复杂业务需求,同时充分利用Nginx的高性能特性。在实际工作中,结合"NGINX实战 基于LUA语言的配置、开发与架构详解@java1234.com.pdf"...

    redis-5.0.5:nginx + redis + lua这是后台开发的基本功。大家多交流

    本自述文件只是一个快速入门文档。... Redis提供了许多自然可以在数据库中找到的功能,例如复制,持久性的可调级别,集群,高可用性。 另一个很好的例子是将Redis认为是memcached的一个更复杂的版本,其中的

Global site tag (gtag.js) - Google Analytics