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

Symfony搭配Varnish出现HTTP 404错误,求解决方案

解决方案

1. 强制Varnish加载自定义VCL文件

默认Varnish镜像启动时不会自动读取/etc/varnish/default.vcl,需在docker-compose.yml中添加启动命令指定配置文件路径:

varnish:
    image: varnish:7.3.0-alpine
    volumes:
      - "./default.vcl:/etc/varnish/default.vcl"
    extra_hosts:
      - "host.docker.internal:host-gateway"
    ports:
      - "8585:80"
    command: varnishd -F -f /etc/varnish/default.vcl -s malloc,256m

修改后重启Varnish容器:

docker-compose down && docker-compose up -d varnish

2. 清除浏览器缓存

浏览器大概率缓存了Varnish默认的「It works!」页面,按Ctrl+Shift+R(Windows/Linux)或Cmd+Shift+R(Mac)强制刷新http://localhost:8585/,此时应和curl请求结果一致,显示Symfony首页。

3. 修复后台操作的404问题

3.1 清空Varnish缓存

若Varnish缓存了旧的404响应,进入容器执行命令清空全部缓存:

docker exec -it <你的Varnish容器名> varnishadm ban req.url ~ .

容器名可通过docker ps命令查看。

3.2 配置Symfony信任代理

让Symfony识别Varnish为可信代理,避免URL生成错误。编辑config/packages/framework.yaml:

framework:
    trusted_proxies: ['127.0.0.1', 'host.docker.internal']
    trusted_hosts: ['localhost', '127.0.0.1']

3.3 核对API Platform Admin的API地址

检查config/packages/api_platform.yaml中的Admin配置,确保API入口指向Varnish地址:

api_platform:
    admin:
        entrypoint: 'http://localhost:8585'

若Admin是独立前端应用,检查其环境变量(如REACT_APP_API_URL)是否设置为http://localhost:8585。

4. 验证请求转发

用curl测试Varnish是否正确转发请求到Symfony:

curl -v http://localhost:8585/admin

若返回404,先确认直接访问http://localhost:8000/admin能正常打开——如果直接访问也报错,说明是Symfony路由本身的问题,和Varnish无关。


内容的提问来源于stack exchange,提问作者M. Mickael

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 20:05:05