在Django中配置Azure Redis Cache遇连接重置错误求助
Django集成Azure Redis Cache连接问题排查方案
以下是针对你遇到的Connection reset by peer错误的可能排查方向:
检查Azure Redis防火墙规则
Azure Redis Cache默认会限制IP访问,你需要将DigitalOcean服务器的公网IP添加到Azure Redis的防火墙白名单中。操作步骤:在Azure Portal找到你的Redis资源,进入「网络」设置,在「防火墙和虚拟网络」选项里添加服务器的公网IP地址或IP范围。统一Redis认证配置方式
你的配置中同时使用了LOCATION里的rediss://协议和OPTIONS中的PASSWORD参数,可能存在冲突。建议二选一:- 方式一:将密码嵌入REDIS_URL,格式为
rediss://:<PASSWORD>@myhostname.net:6380/0(末尾的/0是数据库编号,可选),同时移除OPTIONS中的PASSWORD配置。 - 方式二:保持REDIS_URL为
rediss://myhostname.net:6380/0,确保OPTIONS中的PASSWORD参数正确读取到环境变量。
- 方式一:将密码嵌入REDIS_URL,格式为
调整SSL证书验证配置
虽然开启了SSL: True,但部分环境可能无法自动验证Azure的SSL证书,可尝试临时调整证书验证规则测试:CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": os.getenv('REDIS_URL'), "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "SSL": True, "PASSWORD": os.getenv('REDIS_PASSWORD'), "SSL_CERT_REQS": "none" # 仅测试用,生产环境需替换为CA证书路径 } } }生产环境建议下载Azure官方CA证书,通过
SSL_CA_CERTS参数指定证书路径,避免关闭证书验证。升级依赖版本
旧版本的redis-py或django-redis可能存在Azure Redis兼容性问题,执行以下命令升级到最新稳定版:pip install --upgrade redis django-redis直接测试Redis连接
在DigitalOcean服务器上用redis-cli直接测试连接,排查是否是Django配置之外的问题:redis-cli -h myhostname.net -p 6380 -a <你的密码> --ssl如果该命令连接失败,说明问题出在网络或Azure Redis的基础配置;如果连接成功,再回到Django配置细节排查。
内容的提问来源于stack exchange,提问作者Lutaaya Huzaifah Idris
相关产品推荐
相关产品推荐

