Nginx 静态资源莫名其妙 404 问题解决
Nginx 版本 1.23.3,系统 macOS Ventura 13.3.1。
现象:
一个 PHP 项目,Nginx + PHP FPM,跑在本地的 80 + 443 端口,PHP 正常 work,但静态资源文件显示 404。
检查了文件权限、路径拼写等,都没问题。
尝试修改了 try_files 的各种 Nginx 配置写法,也没查出问题。
最后打开 Nginx 日志,发现是没有文件读取权限:
2023/04/26 19:33:50 [crit] 2293#0: *212 stat()
"/Users/tony/workspace/xxxx-app/public/assets/pc/libs/bootstrap/css/bootstrap.min.css"
failed (13: Permission denied), client: 127.0.0.1, server: abc.xxx.com,
request: "GET /assets/pc/libs/bootstrap/css/bootstrap.min.css HTTP/1.1",
host: "abc.xxx.com", referrer: "https://abc.xxx.com/"
解决办法:
修改 Nginx 的配置文件 nginx.conf
。
笔者使用 HomeBrew 安装的,配置文件在 /opt/homebrew/etc/nginx/nginx.conf
,找到该文件的 user
配置,默认是注释掉的:
#user nobody;
改为:
user tony staff;
tony
是系统本地的用户名,staff
是系统本地的用户组。
注意,后面的用户组一定要加,不加仍然会报错。
最后重启 nginx 就可以了。
# 如果使用了 80 端口需要使用 sudo 权限重启 nginx,默认 8080 端口不需要 sudo
sudo brew services restart nginx