You need to enable JavaScript to run this app.
导航

使用 Nginx + Lua 连接 Redis 时,为何会出现 failed to connect: no resolver defind to resolve 报错?

最近更新时间2024.04.12 13:02:06

首次发布时间2023.04.20 10:42:58

问题现象

当通过 Nginx + Lua 的方式,使用 Redis 的连接地址域名访问实例时,出现了 failed to connect: no resolver defind to resolve 之类的报错信息,提示连接地址无法正常解析。

说明

当您使用其他客户端或 ECS 通过连接地址访问 Redis 实例时,若也出现了类似的域名解析失败的报错(例如 Temporary failure in name resolution )信息,提示连接地址无法正常解析时,您也可以参考本文处理方法进行处理。

可能原因

出现上述报错的原因,可能是 Nginx 配置文件中的 DNS 设置不正确导致连接地址解析失败,您需要检查 Redis 连接地址域名,以及 Nginx 配置文件中的 DNS 设置是否正确。
针对 Nginx 0.6.18 及之后的版本,当使用变量来构造 server 地址时,一定要用 resolver 命令来指定 DNS 服务器地址。

处理方法

说明

本文以 Linux 环境为例介绍相关处理方法。

  1. 检查业务代码中设置的 Redis 连接地址信息是否正确。
    您可以登录 Redis 控制台查看目标 Redis 实例的连接地址和端口号信息。具体操作步骤,请参见查看连接地址

  2. 确认 Nginx 配置文件 nginx.conf 中的 DNS 服务器设置。将火山引擎的 DNS 服务器信息添加到配置文件中,命令如下。

    说明

    • 本文示例中以 Nginx 为例,您可以根据自身业务实际情况,修改您正在使用的客户端或 ECS 的 DNS 服务器设置。
    • 100.96.0.2100.96.0.3 为火山引擎使用的 DNS 服务器。
    resolver 100.96.0.2,100.96.0.3;