这两天,笔者在搭建完LNMP环境之后,想要在这个环境下继续安装wordpress,然而不论是使用浏览器访

问还是使用 curl 测试,一直显示403,在经过多方资料的收集与高人的指点,终于解决,下面来总结一

下nginx常见403问题的原因与解决方法。


一、权限问题


nginx 的默认用户是nobody,如果我们用的是root或者其它用户的话,会没有权限,从而显示403。因

此,我们需要在配置文件/usr/local/nginx/conf/nginx.conf中加一条 user nobody nobody;


二、php索引问题


在虚拟主机配置文件中,我们一定要定义一个php的索引配制文件,不然nginx将不支持php的解析,从而

403。


配置文件如下:


server

{

    listen 80;

    server_name 114.215.129.177;

    index index.html index.htm index.php;

    root /data/www;


    location ~ \.php$ {

        include fastcgi_params;

       #fastcgi_pass 127.0.0.1:9000;

        fastcgi_pass unix:/tmp/php-fcgi.sock;

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;

     }

}


三、路径错误


同样是在上面的配置文件中,我们如果想要安装wordpress或者discuz这样的软件的话,将它放入指定的

目录之后,一定要在配置文件中修改相应的配置,比如笔者所放入的目录是/data/www,所以在配置文件

中也要在相应的地方设置成/data/www,同理,我们在测试php解析的时候,也要将配置文件中的路径改

成测试php文件的存放路径

 

四、默认主机的限制


通常,我们在LNMP环境中,为了安全起见,会定义一个默认虚拟主机的文件,里面会有一些限制,可能

会使我们的访问403


默认主机的配置内容如下:


server

{

   listen 80 default_server;

   server_name 114.215.129.177;

   index index.html index.htm index.php;

   root /tmp/tmp;

   deny all;

}


注意:这里同样也需要php的索引,而且root对应的目录/tmp/tmp/一定要有(例)


笔者就是因为这里的deny的限制,从而访问显示403,我们可以将其改成allow


五、其它错误


除了上面例举的一些常规错误外,还有非常规的错误,比如我,竟然是因为开了×××软件,导致所有的

网站链接被重置,导致了324的错误,不能返回数据