首页 > 代码库 > nginx服务器上遇到了acces denied,报错是fastCGI只要好好修改配置就行了

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只要好好修改配置就行了