You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署NestJS+Redis出现NOAUTH认证要求错误的解决方法

解决NestJS容器化连接带密码的Redis出现NOAUTH错误的问题

问题场景

容器化部署NestJS应用与Redis服务后,使用BullModule连接Redis时抛出以下认证错误:

return new ReplyError(string)
       ^
ReplyError: NOAUTH Authentication required.

相关配置信息如下:

docker-compose.yml

services:
  my_app:
    build:
      context: .
      dockerfile: src/app/Dockerfile
      target: development
    command: npm run start:dev my_app
    env_file:
      - src/.env
    volumes:
      - .:/usr/src/app
      - /usr/src/app/node_modules
    networks:
      - default
    depends_on:
      - database
      - redis
    ports:
      - '80:3000'

  redis:
    image: redis
    restart: always
    command: /bin/sh -c "redis-server --requirepass $$REDIS_PASSWORD"
    env_file:
      - .env
    ports:
      - 6379:6379
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    volumes:
      - ./redis/data:/data

.env文件

REDIS_PASSWORD=password
REDIS_URI=redis://:${REDIS_PASSWORD}@redis:6379?authSource=0
# ---> REDIS_URI=redis://public:${REDIS_PASSWORD}@redis:6379?authSource=0

AppModule配置

BullModule.forRoot(
    {
        redis: {
            host: 'redis',
            port: 6379
        }
    }
),

错误原因

Redis容器通过--requirepass $$REDIS_PASSWORD设置了访问密码,但NestJS的BullModule连接配置中未提供认证密码,导致Redis拒绝未授权的连接请求。

解决方法

方法1:在BullModule配置中添加密码字段

修改AppModule的BullModule配置,直接从环境变量读取Redis密码并配置:

BullModule.forRoot({
  redis: {
    host: 'redis',
    port: 6379,
    password: process.env.REDIS_PASSWORD // 新增密码认证配置
  }
}),

注意:需确保NestJS应用能正确读取到REDIS_PASSWORD环境变量,检查my_app服务的env_file指向的文件中包含该变量。

方法2:使用REDIS_URI直接连接

利用.env中已配置的REDIS_URI(已包含完整认证信息),简化BullModule配置:

BullModule.forRoot({
  redis: process.env.REDIS_URI
}),

此方式无需单独配置host、port、password,URI已包含所有连接参数。

额外优化(可选)

Redis容器的ALLOW_EMPTY_PASSWORD=yes配置与--requirepass逻辑冲突(已设置密码,无需允许空密码),可删除该冗余配置:

redis:
  # ...保留其他配置
  # 移除以下环境变量配置
  # environment:
  #   - ALLOW_EMPTY_PASSWORD=yes

内容的提问来源于stack exchange,提问作者DolDurma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 08:17:23