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

如何用Caddy作为Redis反向代理?解决连接被Redis拦截问题

Redis通过Caddy反向代理被拦截的解决方案

问题的核心原因很明确:Redis使用的是自定义TCP协议,并非HTTP协议。你当前的Caddy配置用了默认的HTTP反向代理规则,会给Redis发送HTTP请求头,Redis无法识别这些HTTP格式的内容,因此会拒绝连接。

下面是具体的解决办法:

1. 使用Caddy的TCP代理模式(推荐)

Caddy 2支持直接代理TCP流量,只需要调整配置,让Caddy以TCP模式监听并转发请求,而非默认的HTTP模式。

配置示例1:监听特定TCP端口

:6379 {
    reverse_proxy redis:6379
}

这样Caddy会在6379端口接收TCP流量,直接转发给Redis容器,不会添加任何HTTP头部,Redis就能正常处理请求了。

配置示例2:绑定域名+TLS加密(适合公网访问)

如果需要通过域名访问并加密传输,可以指定TCP监听的域名和端口,同时配置TLS:

tcp/example.com:6379 {
    tls # 自动申请Let's Encrypt证书,无需手动指定
    reverse_proxy redis:6379
}

客户端连接时需要使用TLS模式:

redis-cli --tls -h example.com -p 6379

2. 额外注意事项

  • 确保Caddy容器和Redis容器处于同一个Docker网络中,这样redis:6379的域名解析才能生效
  • 不要尝试用HTTP客户端(比如curl)访问代理后的Redis,必须使用Redis客户端工具连接
  • 如果Redis本身配置了密码或IP白名单,需要确保Caddy容器的IP在允许列表内,或者密码验证正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 00:03:14