OpenResty程序如何连接开启了TLS的Redis?

目录

OpenResty 项目如何连接开启了 TLS 的 Redis

Kong 插件如何连接开启了 TLS 的 Redis


OpenResty 是一个基于 Nginx 和 Lua 的 Web 应用框架,允许开发者通过 Lua 脚本对 Nginx 的配置和行为进行扩展。当 OpenResty 需要连接到一个开启了 TLS 的 Redis 服务器时,需要确保两个方面:一是 Redis 服务器配置了 TLS,二是 OpenResty 客户端能够使用 TLS 进行连接。

OpenResty 项目如何连接开启了 TLS 的 Redis

接下来以 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 相关的两个元素和作用如下:

  • ssl:如果设置为 true,则使用 SSL/TLS 连接到 Redis(默认为 false)。
  • ssl_verify:如果设置为 true,则校验服务器 SSL/TLS 证书的有效性(默认为 false)。注意,为 true 的话需要配置 lua_ssl_trusted_certificate 来指定 Redis 服务器使用的 CA(或服务器)证书,可能还需要相应地配置 lua_ssl_verify_depth。在 nginx.conf 文件中,需要配置以下内容:
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 插件如何连接开启了 TLS 的 Redis

Kong 是一个开源的 API 网关,旨在帮助开发者和企业管理、保护和扩展其 API 和微服务。Kong 的主要特点如下:

  • 高性能:基于 Nginx 和 OpenResty 构建,处理高并发请求。
  • 可扩展性:支持插件体系,用户可以根据需求扩展功能。
  • 多种部署方式:支持在裸机服务器、虚拟机、容器和 Kubernetes 集群中部署。
  • 安全性:提供多种身份验证和授权机制,确保 API 的安全访问。
  • 易于集成:与现有的 DevOps 工具和 CI/CD 流程无缝集成。

因为 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)

相关推荐

  1. OpenResty程序如何连接开启TLSRedis

    2024-07-11 06:08:05       23 阅读
  2. OpenResty 安装及lua-resty-redis

    2024-07-11 06:08:05       31 阅读
  3. openresty+lua遍历 redis set

    2024-07-11 06:08:05       28 阅读
  4. 如何开发属于自己程序

    2024-07-11 06:08:05       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 06:08:05       53 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 06:08:05       55 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 06:08:05       46 阅读
  4. Python语言-面向对象

    2024-07-11 06:08:05       56 阅读

热门阅读

  1. Jitsi Meet指定用户成为主持人

    2024-07-11 06:08:05       17 阅读
  2. Rust编程-编写自动化测试

    2024-07-11 06:08:05       24 阅读
  3. 开源大势所趋

    2024-07-11 06:08:05       21 阅读
  4. Sqlmap中文使用手册 - Target模块参数使用

    2024-07-11 06:08:05       23 阅读
  5. Grind 75 - Leetcode146 LRU缓存

    2024-07-11 06:08:05       23 阅读
  6. vue3 学习笔记02 -- 配置路由router+导航守卫

    2024-07-11 06:08:05       24 阅读
  7. Win11安装WSL2在非系统盘(非C盘)+图形化界面

    2024-07-11 06:08:05       23 阅读
  8. c语言指针

    2024-07-11 06:08:05       19 阅读
  9. Mojo模板引擎:释放Web开发的无限潜能

    2024-07-11 06:08:05       16 阅读