nginx服务器上遇到了acces denied,报错是fastCGI只要好好修改配置就行了
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx服务器上遇到了acces denied,报错是fastCGI只要好好修改配置就行了相关的知识,希望对你有一定的参考价值。
猜想:
懵逼
实践:
首先通用的方法,并没有解决问题.
1.修改php-fpm配置文件
vim /etc/php-fpm.d/www.conf
user = nginx 编辑用户为nginx
group = nginx 修改组为nginx
2.修改目录权限
chown nginx.nginx /usr/share/nginx/html/ -R #设置目录所有者
chmod 700 /usr/share/nginx/html/ -R #设置目录权限
定位:
首先看报错:
2013/10/22 20:05:49 [error] 12691#0: *6 fastcgi sent in stderr: "primary script unknown" while reading response header from upstream, client: 192.168.168.1, server: localhost, request: "get / http/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.168.133"
打开nginx的配置文件,修改关于fastCGI的配置~
location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
这个就可以解决access denied的问题!
接下来还有一个session的问题,报错是无权限访问session,这个用
chmod 777 /var/lib/php/session
命令就能搞定~
顺便放一下用typecho的相关错误:
首先是nginx不会默认开启pathinfo模式,这个要设置,根据文档:
无法登录后台,出现"405, method not allowed"
这主要是由于nginx的固有bug导致,因为typecho使用的是静态化地址,而nginx 0.7之前的版本是不允许对静态地址做post请求的,所以会出现这个错误。
解决方法
升级nginx至0.7或者0.7以上的版本即可
无法登录后台,点击前台链接或者后台登录时出现"404, not found"
这是nginx的设置时没有注意支持pathinfo导致的,具体关于php pathinfo的信息可以在网上搜索到。
解决方法
一般的出现这种情况时,nginx.conf里的的location设置都是类似这样
location ~ .*\.php$
要支持pathinfo,要改成
location ~ .*\.php(\/.*)*$
然后在location里加上
set $path_info ""; set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") { set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info;
在某些老版本的php里面,可能还要打开php.ini里的cgi.fix_pathinfo
cgi.fix_pathinfo = 1
目前,环境+博客就搭好了
以上是关于nginx服务器上遇到了acces denied,报错是fastCGI只要好好修改配置就行了的主要内容,如果未能解决你的问题,请参考以下文章
nginx: [emerg] bind() to 0.0.0.0:18071 failed (13: Permission denied)
AWS Elastic Beanstalk Python Django S3 Access Denied 无法上传/读取文件