Nginx部署Moodle访问域名返回403 Forbidden错误问题咨询
错误原因
日志提示*306 directory index of "/var/www/html/moodle/" is forbidden,说明Nginx尝试访问站点根目录时,无法正常加载预设的索引文件(index.php),核心常见原因如下:
- Nginx运行用户与Moodle目录所有者不匹配,没有目录遍历、文件读取权限
- 站点目录上层路径(/var/www、/var/www/html)缺少Nginx用户的执行权限,导致无法进入moodle目录读取文件
- SELinux安全策略拦截了Nginx对站点目录的访问(仅针对CentOS/RHEL类系统)
- PHP-FPM运行用户与Nginx不一致,无法处理PHP文件请求,导致索引文件index.php无法正常返回
排查修复步骤
- 第一步:校验服务运行用户一致性
执行以下命令分别查看Nginx和PHP-FPM的运行用户:
确保两者运行用户一致(通常为www-data),如果不一致,修改nginx.conf和php-fpm.d/www.conf中的user、group配置为相同值后重启服务。ps aux | grep nginx ps aux | grep php7.4-fpm - 第二步:修复目录全路径权限
执行以下命令设置目录所有者和权限,确保Nginx有足够权限访问站点文件:chown -R www-data:www-data /var/www/html/moodle chmod -R 755 /var/www/html/moodle chmod 755 /var/www /var/www/html - 第三步:校验SELinux策略(仅CentOS/RHEL系统需要操作)
执行sestatus查看SELinux运行状态,如果为Enforcing模式,执行以下命令添加站点目录的访问权限:chcon -R -t httpd_sys_content_rw_t /var/www/html/moodle - 第四步:校验Nginx配置合法性
执行nginx -t检查配置语法是否正确,确认无报错后执行systemctl reload nginx重载配置生效。 - 验证修复效果:直接访问
你的域名/index.php,如果可以正常加载,说明问题已解决。
内容的提问来源于stack exchange,提问作者Romulo Ferreira Mesquita
相关产品推荐
相关产品推荐

