迁移项目到新电脑上,同样的 Nginx 配置,结果在新电脑上发现了一个问题:

所有的资源文件(js/image/css等)报 403 Forbidden 错误。

因为配置文件一模一样,所以开始以为是 Nginx 版本问题,搜了一下网上没发现这个问题。

于是打开 Nginx 的错误日志,发现:

2022/08/04 01:01:57 [error] 11175#0: *7 open() "/Users/tony/xxx/vendors/moment/min/moment.min.js" failed (13: Permission denied), client: 127.0.0.1, server: dev.xxx.com, request: "GET /vendors/moment/min/moment.min.js HTTP/1.1", host: "dev.xxx.com", referrer: "http://dev.xxx.com/auth/login?ref=/ops"

根据 Permission denied,可以知道是 Nginx 没有文件的访问权限。

于是设置整个资源文件夹为 777,仍然无效。

那就只有一个可能了。

执行 ps aux | grep nginx ,发现:

2023-03-21T21:52:57.png

nginx 的子进程竟然是 nobody 用户…

于是修改 nginx.conf 里的用户配置,改为

user tony;

保存,检查配置文件,sudo nginx -t ,结果报错,提示:

nginx:[emerg] getgrnam("tony") failed in /xxx/xxx/nginx.conf

原来,user 配置需要两个参数,一个是用户名,一个是用户组。

默认用户名=用户组名,所以实际生效的是 user tony tony,而实际并没有 tony 这个用户组,所以在执行 getgrnam(ger group name) 的时候就报错了。

最终改为:

user tony staff;

重启 Nginx,问题解决。

标签: nginx, macos

添加新评论