Nginx user 配置引发的血案

更新日期: 2018-01-26 阅读次数: 26214 分类: Nginx

在折腾完了 gulp livereload web server 之后,我才发现其实 Nginx 才是最靠谱的 web 调试服务。 毕竟写伪接口用 Nginx 要方便的多,也不用考虑 node 模块的一堆奇葩依赖。

但是 Nginx 也让我吐了一口血。白天在公司 Ubuntu 开发机上一切正常,但是回家后发现 Mac 下的 Nginx 一直报错。

stat() "/Users/zhongwei/test/index.html" failed (13: Permission denied), rewrite or internal redirection cycle while internal redirect to "/index.html"

这里有两个问题

  • 权限问题
  • 为何造成了死循环

问题一个一个解决

权限问题

将 user 配置改成了

user zhongwei;

报了一个新的错误

[emerg]: getgrnam("zhongwei") failed in /usr/local/nginx/conf/nginx.conf:1

参考 Nginx 的配置文档

Syntax:	user user [group];
Default: user nobody nobody;

Defines user and group credentials used by worker processes. If group is omitted, a group whose name equals that of user is used.

才知道,在 group 省略的情况下,group 默认等于 user 名。然后,ls -la 了一下 web 目录

pelican-wiki $ ls -la
total 104
drwxr-xr-x   19 zhongwei  staff   646  3 23 22:22 .
drwxr-xr-x   68 zhongwei  staff  2312  3 21 21:28 ..
drwxr-xr-x   16 zhongwei  staff   544  3 31 19:28 .git

我日,group 居然是 staff 这个鸟名字。。。 于是改成

user zhongwei staff;

之后一切工作正常。

不要忘了死循环问题

The problem here is that the second parameter here, $uri/, causes each of the files in your index directive to be tried in turn. If none are found, it then moves on to /index.html, which causes the same location block to be re-entered, and since it still doesn't exist, you get an endless loop.

try_files $uri $uri/ /index.html;
替换为
try_files $uri $uri/ =404;
即可

参考

领取618阿里云/腾讯云服务器优惠券

关于作者

我是来自山东烟台的一名开发者,喜欢瞎折腾,顺便记记笔记。有敢兴趣的话题,欢迎加微信 zhongwei 聊聊。 白天写程序,晚上哄熊孩子,可能回复有点慢,见谅。 查看更多联系方式

相关文章

谈笑风生

Sligcm

不错的分享。

爱评论不评论

近期节日

2020年06月06日 全国爱眼日
2020年06月11日 中国人口日
2020年06月20日 世界难民日
2020年06月21日 父亲节
2020年06月21日 夏至
2020年06月22日 中国儿童慈善活动日
2020年06月23日 国际奥林匹克日
2020年06月25日 全国土地日
2020年06月25日 端午节
2020年06月26日 国际禁毒日
2020年06月30日 世界青年联欢节
2020年07月01日 中国共产党诞生日
查看更多节日