Nginx报错汇总
该文档记录一下nginx使用过程中遇到报错,善用nginx的日志,其中记录了一些比较关键的信息可以帮助定位错误,若修改配置后请重启nginx或重新加载nginx配置文件以使其生效
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost"
现象:
访问页面时,可能显示“file not found”
原因:
可能是未能正确地找到php文件
解决方法:
尝试前往Nginx配置文件查看传递给php解释器的规则,确认是否正确的传递php文件
可以尝试从以下几方面解决:
-
确认传递给php解释下的root路径
-
尝试修改fastcgi_param配置为如下,$document_root为当前root路径下值
-
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
-
kevent() reported that connect() failed (61: Connection refused)
现象:
访问页面时,可能显示“file not found”
原因:
可能是php-fpm未启动,文件未能传送给php-fpm编译
解决方法:
启动php-fpm
Nginx 403 Forbidden
现象:
访问页面时,可能显示“403 FORBIDDEN”
原因:
可能的原因如下
- nginx启动用户与工作用户不一致
- 在nginx配置文件中未指定默认索引文件index
- nginx没有对文件操作权限
解决方法:
- 查看nginx配置文件,修改user选项,e.g.
user root;
-
确认nginx配置文件中index是否设置正确,e.g.
server { listen 8080; server_name localhost; index index.html; root /usr/local/nginx/www/html/; } -
确认nginx是否具有对应权限,若无需要赋予权限,e.g.
chmod -R 777 /usr/local/nginx/www/html/除此以外也可能是linux下权限管理机制SELINUX阻拦,可以修改配置禁用SELINUX,e.g.
vi /etc/selinux/config #请自行确认SELINUX配置所在目录,一般为这个目录 SELINUX=disabled #修改该项为disabled reboot #重启使其生效也可通过下列方式关闭selinux,但可能重启时仍开启,可以修改配置永久禁用selinux
sestatus #可以通过此命令查看selinus状态 setenforce 0 #可以通关此命令关闭selinus
nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges
现象:
尝试对nginx配置作相关操作(重新加载配置,关闭,重启nginx等),提示上述信息
原因:
启动nginx用户不具有超级用户权限
解决方法:
以最高权限运行nginx,可执行以下命令:
sudo nginx
- 此为临时解决方案,后续重新启动nginx可能仍不具有较高权限
- 一些解决方案,提出前往nginx的sbin文件夹下在nginx程序目录下亦sudo启动,暂未考证其正确性
长期解决方案可能如下-
chown root:root nginx
chmod 755 nginx
chmod u+s nginx
chown root.root nginx将文件或目录 nginx 的所有者修改为 root,并将所属的组也修改为 root。所有者,归属者可自行修改
chmod 755 nginx设置文件或目录 nginx 的权限。表示所有者具有读 (r)、写 (w) 和执行 (x) 权限,而所属组和其他用户仅具有读和执行权限,没有写权限。具体权限设置可自行修改
chmod u+s nginx设置了文件或目录 nginx 的 SUID (Set User ID) 权限位。当一个文件被设置了 SUID 权限,当任何用户执行该文件时,它都会以文件所有者的身份来执行。在这种情况下,当用户执行 nginx 时,它将以 root 用户的身份来执行,即使执行者不是 root 用户也是如此。