赞
踩
目录
OpenResty 项目如何连接开启了 TLS 的 Redis
OpenResty 是一个基于 Nginx 和 Lua 的 Web 应用框架,允许开发者通过 Lua 脚本对 Nginx 的配置和行为进行扩展。当 OpenResty 需要连接到一个开启了 TLS 的 Redis 服务器时,需要确保两个方面:一是 Redis 服务器配置了 TLS,二是 OpenResty 客户端能够使用 TLS 进行连接。
接下来以 resty.redis 库(代码库地址为 https://github.com/openresty/lua-resty-redis)为例进行讲解,这个库从 v0.28 (要求 ngx_lua 版本大于等于 0.5.14 或者 OpenResty 版本大于等于 1.2.1.14)开始支持连接开启了 TLS 的 Redis,通过 connect 方法的一个可选参数进行配置。connect 的使用方法如下:
syntax: ok, err = red:connect(host, port, options_table?)
或者
syntax: ok, err = red:connect("unix:/path/to/unix.sock", options_table?)
可选的 options_table 参数是一个 Lua 表,和 TLS 相关的两个元素和作用如下:
- lua_ssl_verify_depth 2;
- lua_ssl_trusted_certificate /path/to-ca-certs.pem;
具体代码示例如下:
- local redis = require "resty.redis"
-
- local red = redis:new()
-
- red:set_timeout(2000)
-
- local sock_opts = {}
- local host = "your redis host"
- local auth = "your redis password"
- local time_window = 300
-
- sock_opts.ssl = true
- sock_opts.ssl_verify = false
-
- local ok, err = red:connect(host, 6379,
- sock_opts)
- if not ok then
- ngx.log(err)
- return
- end
-
- local times, err = red:get_reused_times()
- if err then
- ngx.log(err)
- return
- end
-
- if times == 0 then
- if auth ~= "" then
- local ok, err = red:auth(auth)
- if not ok then
- ngx.log(err)
- return
- end
- end
- end
-
- local ok, err = red:select(0)
- if not ok then
- ngx.log(err)
- return
- end
Kong 是一个开源的 API 网关,旨在帮助开发者和企业管理、保护和扩展其 API 和微服务。Kong 的主要特点如下:
因为 Kong 的插件功能非常强大,通常会开发一系列的插件来支撑项目的需求,接下来讲解一下如何在 Kong 插件中支持连接开启了 TLS 的 Redis。
依然以 resty.redis 库为例进行讲解,因为这个库从 v0.28 开始支持连接开启了 TLS 的Redis 并且要求 OpenResty 版本大于等于 1.2.1.14,所以首先要检查下自己所使用的 Kong 依赖的 resty.redis 和 OpenResty 的版本是否符合要求,不符合要求的话需要升级到支持的版本。升级 resty.redis 库也很简单,首先切到这个库的 github 代码库 https://github.com/openresty/lua-resty-redis,选择 v0.28或以上的 tag,进到 lib/resty 目录,将 redis.lua 下载下来并直接覆盖掉 Kong 目录下的 redis.lua 即可。插件里的代码使用方式和上面类似,关键代码如下:
- local host = "your redis host"
- local auth = "your redis password"
-
- local sock_opts = {}
- sock_opts.ssl = true
- sock_opts.ssl_verify = false
-
- local ok, err = red:connect(host, 6379,
- sock_opts)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。