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

Api Platform集成Caddy时如何允许HTTP访问且保留Mercure配置

解决步骤

1. 优先排除本地缓存干扰

很多时候重定向是浏览器本地HSTS缓存导致的,和Caddy配置无关,先通过命令行测试确认真实响应:

curl -v http://localhost

如果返回状态码是200,说明配置已经生效,清理浏览器缓存/开启无痕模式即可正常访问。

2. 针对不同需求修改Caddyfile配置

所有Mercure相关配置完全保留,仅修改开头的全局块和站点声明块即可:

场景A:完全关闭HTTPS,仅允许HTTP访问
{
    # 新增这行,完全关闭自动HTTPS功能
    auto_https off
    {$DEBUG}
    servers {
        protocol {
            experimental_http3
        }
    }
}

# 修改站点声明,强制走HTTP协议监听80端口
http://{$SERVER_NAME}:80

# 后续的log、@pwa匹配、route块(含mercure配置)完全保留原内容即可
场景B:同时保留HTTP和HTTPS访问,关闭自动重定向
{
    # 新增这行,仅关闭HTTP转HTTPS的自动重定向,HTTPS服务仍正常运行
    auto_https disable_redirects
    {$DEBUG}
    servers {
        protocol {
            experimental_http3
        }
    }
}

# 站点声明可以保留原{$SERVER_NAME}不变
{$SERVER_NAME}

# 后续所有配置完全保留原内容即可

3. 清理旧配置残留并重启服务

Caddy会把证书、运行配置持久化在caddy_data、caddy_config卷中,修改配置后必须清理旧卷才能生效:

# 停止容器并删除关联卷(开发环境无风险,生产环境请先备份重要数据)
docker compose down -v
# 重建并启动容器
docker compose up -d --build

之前配置不生效的核心原因

  1. 未清理Caddy持久化卷,旧的配置和证书残留,新修改的配置没有实际加载
  2. 浏览器HSTS缓存了之前的重定向规则,导致即使服务端配置生效,浏览器依然自动跳转HTTPS
  3. 站点声明没有显式指定http://前缀,Caddy默认对匹配的域名启用自动HTTPS逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:39:03