昨天尝试wordpress博客中留言时,居然提示403错误。不是千万人都在用的博客程序吗,怎么还会报错?与是开始了长达一小时的找错流程。
文件权限问题
网站目录权限
如果请求的PHP文件没有执行权限,访问是会报403错误的,修改文件权限为755。
chmod -R 755 /wwwroot/yantuz.cn/
nginx用户权限
如果还不行的话继续往下进行,查看nginx的启动用户和用户组。
vim /usr/local/nginx/conf/nginx.conf #第一行 user www www;
得知nginx是以www用户启动的,所以再次修改网站目录
chown -R www:www /wwwroot/yantuz.cn/
当然,也可以反向思维,修改nginx.conf中的用户的root。
vim /usr/local/nginx/conf/nginx.conf #修改为: user root; #重启nginx service nginx restart
nginx配置
如果文件夹权限没有解决你的问题,那就要查看nginx配置了。
首先网站一定要设置默认文档,检查网站的虚拟主机配置文件
vim /usr/local/nginx/conf/vhost/yantuz.cn.conf #查看配置 server{ index index.html index.php; #确保有这行配置 }
如果上述全都检查过,仍然不行的话,接着往下看喽。这也是博主遭遇到的情况,可能是目录访问受到了限制,我的问题出在这一行。
server{ # Deny access to PHP files in specific directory location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; } }
本来以为是个WordPress的安全设置,字面意思是禁止掉一些敏感目录的访问请求,就顺手开启了。而提交评论的请求,正好在这些文件夹中,所以全被禁止掉了,注释掉这行,并重启nginx恢复正常。
遇到同样问题的小伙伴可以尝试在配置文件中查找deny all的字眼,目录或文件被禁止访问就会出现403报错啦。