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 

标签: none