ngx_lua将lua嵌入到nginx,让nginx执行lua脚本,高并发,非阻塞的处理各种请求。文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-lua-redis/
url请求nginx服务器,然后lua查询redis,返回json数据。文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-lua-redis/
备注:centos或者redhat系统请跳转到nginx + ngx_lua安装测试文章源自运维生存时间-https://www.ttlsa.com/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文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-lua-redis/
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文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-lua-redis/
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'文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-lua-redis/
["www","www.ttlsa.com","mail","mail.ttlsa.com"]
www.ttlsa.com文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-lua-redis/
文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-lua-redis/
文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-lua-redis/文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-lua-redis/我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
9F
我整理了一篇文章出来了,测试通过~
8F
这么粗糙的文章 也敢写出来 sb
7F
这个,今天按照步骤跑了一下,步骤中提到的均是按照现在版本安装;然后就是各种报错,各种跪,折腾了一下午了。。。什么时候出视频啊?
6F
fffffffffffffuk lua you win
5F
mark下来,目前还不知道lua干嘛用的。继续学习。
4F
fuck.lua 你赢了
3F
学习了
2F
作者有点不太文明呀
1F
fuck.lua ……
来自外部的引用