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

Laravel Filament静态文件无/public/前缀时Nginx返回404问题

解决Laravel Filament静态文件需加/public/前缀才能访问的问题

你的核心问题出在docker-compose的nginx服务挂载配置错误,导致Nginx的根目录实际指向的路径和预期不符。

问题分析

看你的docker-compose里web服务的volumes配置:

volumes:
    - ./nginx.conf:/etc/nginx/conf.d/default.conf
    - .:/var/www/html/public

这里把宿主机的项目根目录(.)直接挂载到了容器内的/var/www/html/public,但Laravel的静态文件实际存放在宿主机项目根目录下的public文件夹中。这就造成了:

  • 访问http://localhost:8060/css/xxx.css时,Nginx会去容器的/var/www/html/public/css/xxx.css查找,对应宿主机的./css/xxx.css,该路径不存在,返回404。
  • 加/public/前缀访问时,Nginx会去容器的/var/www/html/public/public/css/xxx.css查找,对应宿主机的./public/css/xxx.css,这是正确的文件路径,所以能正常加载。

解决方案

修改docker-compose中web服务的volume挂载配置,将宿主机的./public文件夹挂载到容器的/var/www/html/public:

services:
    web:
        # 保留其他原有配置
        volumes:
            - ./nginx.conf:/etc/nginx/conf.d/default.conf
            - ./public:/var/www/html/public  # 修正此处的挂载路径

验证步骤

  1. 停止并重启容器:
docker-compose down
docker-compose up -d
  1. 清除浏览器缓存后,访问不带/public/前缀的静态文件URL,确认可正常加载。

注:你的Nginx配置本身没有问题,root /var/www/html/public的设置符合Laravel的部署规范,问题完全源于Docker挂载路径错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:05:55