下面是我阅读春哥OpenResty官网主页中“Dynamic Routing Based On Redis”一节的实操记录,整理如下。
https://openresty.org/cn/dynamic-routing-based-on-redis.html

这个例子展示了利用Redis将进来的请求,依据User-Agent头的不同,路由到不同的后端HTTP服务器上面。
这个demo将会使用到OpenResty打包的Redis2 Nginx Module, Lua Nginx Module, Lua Redis Parser Library, 和Set Misc Nginx Module等模块

1.安装redis

参见本博博文

http://blog.csdn.net/tao_627/article/details/78936447

2.配置OpenResty
下面是nginx.conf的配置

worker_processes  1;
user root;
error_log logs/error.log info;events {worker_connections 1024;
}http {upstream apache.org {server apache.org;}upstream nginx.org {server nginx.org;}server {listen 8080;location = /redis {internal;set_unescape_uri $key $arg_key;redis2_query get $key;redis2_pass 127.0.0.1:6379;}location / {set $target '';access_by_lua 'local key = ngx.var.http_user_agentlocal res = ngx.location.capture("/redis", { args = { key = key } })print("key: ", key)if res.status ~= 200 thenngx.log(ngx.ERR, "redis server returned bad status: ",res.status)ngx.exit(res.status)endif not res.body thenngx.log(ngx.ERR, "redis returned empty body")ngx.exit(500)endlocal parser = require "redis.parser"local server, typ = parser.parse_reply(res.body)if typ ~= parser.BULK_REPLY or not server thenngx.log(ngx.ERR, "bad redis response: ", res.body)ngx.exit(500)endprint("server: ", server)ngx.var.target = server';proxy_pass http://$target;}}
}

3.开启redis并灌入一些测试数据
在localhost:6369上开启redis服务器
./redis-server
使用redis-cli工具填入一些数据
./redis-cli
   redis> set foo apache.org
   OK
   redis> set bar nginx.org
   OK

4.开启终端进行测试
curl -vo /tmp/apache.org --user-agent foo localhost:8080
   
curl -vo /tmp/nginx.org --user-agent bar localhost:8080

5.进一步的性能改进

对性能调优,我们能想到的就是,对redis连接开启连接池,参见Redis2 Nginx Module's README等文档

6.参考文献

[1].https://openresty.org/cn/dynamic-routing-based-on-redis.html

在CentOS 6.9 x86_64的OpenResty 1.13.6.1上使用基于Redis实现动态路由示例相关推荐

  1. 在CentOS 6.9 x86_64的OpenResty 1.13.6.1上使用LuaRocks示例

    下面是我阅读春哥OpenResty官网主页中"Using LuaRocks"一节的实操记录,整理如下. https://openresty.org/cn/using-luarock ...

  2. 在CentOS 6.9 x86_64上搭建全功能的OpenResty 1.13.6.1笔记

    好久没有玩OpenResty,这段时间机会难得,赶紧实践一下.下面是我在rMBP的CentOS 6.9 x86_64虚拟机上安装目前最新版OpenResty 1.13.6.1的笔记. OpenRest ...

  3. 在CentOS 6.6 x86_64上安装SystemTap/Perf+FlameGraph玩转火焰图实录

    下面是我结合网上资料摸索出的可行的操作方法,记录在这样,以备后面继续研究.操作系统是CentOS 6.6 x86_64. 1.将内核版本升级到最新版 因为我机器上CentOS 6.6的内核版本号是2. ...

  4. 在CentOS 6.5 x86_64上安装libunwind的问题

    1.事由 当时间进入2021年,之前的对CentOS 6.x上的官方依赖仓库和国内镜像仓库都不好使了,如果要安装软件包,是一个痛苦的事情.今天我在一台CentOS 6.5的老机器上安装ats的rpm包 ...

  5. 在CentOS 6.8 x86_64上安装ATS 6.2.1实录

    我的博客上已经有很多这样的ats安装实录了,这次的笔记有些不一样,因为它是ATS目前最新的LTS版本6.2.1的安装,写出来更多的是整理自己的思路,因为很多东西搞过不整理,过一段时间就完全忘记掉了. ...

  6. CentOS 6.6 x86_64升级内核到最新版2.6.32-642.3.1.el6.x86_64

    在基于CentOS平台的工作过程中,难免有时需要升级或者降级内核以验证功能.调试性能或者更新整个系统. 如果从头重新编译一个内核费时费力,另外加之现在内核特性越来越复杂,依赖的库或者工具也不少,找到一 ...

  7. 在VirtualBox 5.0.12 for Linux版本上安装CentOS 6.6 x86_64系统

    本博文记录了我在CentOS 6.6 64bit上的VirtualBox 5.0.12上安装一个CentOS 6.6 64bit的过程.我选择这样做的原因,是便于以后安装和验证一下软件. 如果直接在真 ...

  8. Centos 6.3 x86_64安装与配置bacula

    Centos 6.3 x86_64安装与配置bacula 一,简介 Bacula是一款开源的跨平台的网络备份工具,基于c/s架构,通过它,管理员可以对数据进行备份,恢复,以及完整性验证等操作. 适合业 ...

  9. CentOS 6.3(x86_64)下安装Oracle 10g R2

    CentOS 6.3(x86_64)下安装Oracle 10g R2 目 录 一.硬件要求 二.软件 三.系统安装注意 四.安装Oracle前的系统准备工作 五.安装Oracle,并进行相关设置 六. ...

最新文章

  1. 电子商店——图片轮播
  2. java实现stack search_Java Stack search()用法及代码示例
  3. winForm调用HTTP短信接口
  4. 【客户故事】借助钉钉宜搭,奶茶店也开始用黑科技管理门店了
  5. 近期两篇双目图像超分辨算法论文解读 |AAAI2020 SPL2020
  6. 四面楚歌的Android工程师该何去何从
  7. c++ release和debug语句分离
  8. 制作小游戏贪吃蛇即解决将python制作成exe
  9. iOS tabbar 控制器基本使用
  10. Shiro(二)——Shiro认证入门案例
  11. UVA 1153 Keep the Customer Satisfied 顾客是上帝(贪心)
  12. 程序员转实施工程师_实施工程师到底做什么的?我认为比程序员接触面更广
  13. 我以前的痛苦,你也拥有吗?
  14. Excel怎样设置标题行,Excel工作表中标题行的处理
  15. 模式的模式:从设计模式到元模式
  16. 图像特征提取(形状特征,空间关系特征)
  17. Mac OS 中Texstudio 无法找到 .sty文件
  18. 大数据毕业设计题目汇总 python毕设选题推荐
  19. 我的十年青春(10至20):写博10年1700万PV、创业5年30万学员
  20. 【IT文化杂谈】硅谷,仙童与“八叛徒”的故事

热门文章

  1. Integer vs int
  2. Myeclise下tomcat启动报错,启动超时
  3. 题目1460:Oil Deposit
  4. 理解面向过程和面向对象的程序设计方法
  5. pygame是python的一个库吗,python学习pygame,,基本库导入impor
  6. graphs菜单_图形用户界面菜单全面解析
  7. 北京工业大学计算机科学与技术学科评估,本次学科评估进步最大学校之一——北京工业大学...
  8. php实现调查结果百分比显示,Php文本游戏试图根据百分比做出结果
  9. linux中使用u盘和光驱的命令_Linux操作系统下挂载硬盘光驱和U盘的方法
  10. php preg_match 只匹配第一个字符_PHP正则表达式核心技术完全详解 第12节知识补充 断言匹配