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

两个Docker化API Platform应用本地通信的HTTPS问题求助

问题1:解决容器间HTTPS请求报错

这个报错是因为API Platform本地环境使用自签名SSL证书,App1的PHP容器默认不认可该证书,导致SSL握手失败。以下是两种适合本地开发的解决办法:

方法1:让App1信任App2的自签名证书

  1. 定位App2容器内的自签名证书路径:API Platform默认通过Caddy生成证书,路径一般为/data/caddy/certificates/local/<domain>/<domain>.crt(可根据实际Caddy配置目录调整)。
  2. 在App1的compose.yaml中,将App2的证书目录挂载到PHP容器的系统信任证书目录,并添加证书更新命令:
    services:
      php:
        [...]
        volumes:
          - /path/to/app2/caddy/certificates:/usr/local/share/ca-certificates/app2-cert
        command: sh -c "update-ca-certificates && php-fpm"
    
    (若两个容器在同一网桥,也可通过共享卷方式挂载证书)
  3. 重启App1的PHP容器,证书会被加入信任列表,后续请求即可正常完成SSL握手。

方法2:临时禁用SSL验证(仅本地开发使用,生产环境绝对禁止)

如果用Guzzle发起请求,在客户端配置中关闭SSL验证:

$client = new \GuzzleHttp\Client([
    'verify' => false,
]);

如果用curl命令,添加-k参数跳过证书校验:

curl -k https://<app2-container-name>/api/v1/<some-endpoint>
问题2:本地禁用API Platform的HTTPS,阻止HTTP重定向

API Platform默认通过Caddy反向代理+Symfony配置强制HTTPS,要完全禁用需修改两处核心配置:

1. 修改Caddy配置(关键步骤)

找到项目根目录的Caddyfile,将HTTPS相关配置替换为HTTP:
原配置示例:

{$SERVER_NAME}

tls internal

reverse_proxy php:9000

修改后:

http://{$SERVER_NAME}

reverse_proxy php:9000

(删除tls internal行,给域名前缀添加http://)

2. 调整Symfony框架配置

  • 在项目根目录的.env文件中,将APP_URL改为HTTP地址:
    APP_URL=http://localhost:80
    
  • 打开config/packages/framework.yaml,删除或注释强制HTTPS的相关配置:
    # framework:
    #   session:
    #     cookie_secure: true
    #   http_client:
    #     default_options:
    #       verify_peer: true
    
  • 若使用Security组件,打开config/packages/security.yaml,将require_channel: https改为http或直接删除:
    # security:
    #   firewalls:
    #     main:
    #       require_channel: http
    

3. 更新Docker端口映射

在compose.yaml中,将Caddy服务的端口从443改为80:

services:
  caddy:
    [...]
    ports:
      - "80:80"
      # 删除原443端口映射

重启所有容器后,HTTP请求将不再被重定向到HTTPS。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 12:09:55