Azure Redis Cache连接被拒绝:托管Web服务器PHP脚本连接故障排查
问题描述
尝试从托管Web服务器连接Azure Redis Cache,使用的PHP脚本如下:
<?php $redisHost = 'yyy.redis.cache.windows.net'; $redisPort = 6379; $redis = new Redis(); try { $redis->connect($redisHost, $redisPort); $redis->auth('xxx'); echo 'Connected to Redis successfully!'; } catch (Exception $e) { echo 'Failed to connect to Redis. Error: ' . $e->getMessage(); } ?>
已通过phpinfo()确认服务器启用了redis扩展,但执行脚本时提示Connection refused。已确认主机地址、认证信息无误,Azure Redis Cache实例正常运行且已启用非SSL端口6379,询问还有哪些可能的问题?
可能的问题及排查方向
- 托管服务器防火墙/安全组限制:托管Web服务器的出站规则可能未允许访问6379端口,需检查服务器所在的防火墙或云服务商安全组,确保出站流量能到达Azure Redis的6379端口。
- Azure Redis的防火墙规则未放行服务器IP:Azure Redis Cache默认限制IP访问,即使实例正常运行,也需要在Azure门户的Redis实例防火墙设置中,将托管Web服务器的公网IP添加到允许列表,否则会被拒绝连接。
- PHP Redis扩展版本兼容性问题:部分旧版本的PHP Redis扩展可能与Azure Redis Cache的协议不兼容,尝试更新到较新的稳定版本再测试。
- 网络路由问题:托管服务器到Azure Redis的网络路径存在阻断,比如运营商网络的路由限制,可在服务器上用
telnet yyy.redis.cache.windows.net 6379或nc -zv yyy.redis.cache.windows.net 6379命令测试端口连通性,确认是否能建立TCP连接。 - 非SSL端口配置未生效:虽然已启用非SSL端口,但可能配置未同步生效,建议在Azure门户重新确认6379端口的启用状态,必要时重启Redis实例确保配置生效。
- DNS解析问题:托管服务器无法正确解析Redis主机地址
yyy.redis.cache.windows.net,可在服务器上执行nslookup yyy.redis.cache.windows.net检查解析结果是否正确,若解析异常,需检查服务器的DNS设置。
内容的提问来源于stack exchange,提问作者tw-S
相关产品推荐
相关产品推荐

