本地网络部署Moode与PiHole遇Nginx目录索引禁止错误求助
排查Moode与PiHole共存时8080端口访问PiHole的Nginx错误
错误分析
报错directory index of "/var/www/html/" is forbidden说明:Nginx在处理8080端口的根请求时,既找不到配置中指定的索引文件(index.php/index.html等),又因autoindex off禁止了目录列表,因此返回权限禁止错误。结合现有配置,核心问题是PiHole的Nginx配置未正确指向PiHole后台的实际入口路径。
排查与修复步骤
1. 确认PiHole文件路径与权限
先验证PiHole后台的核心文件是否存在且权限正确:
# 检查admin目录及入口文件 ls -l /var/www/html/admin/ # 确认PHP-FPM套接字权限 ls -l /run/php/php7.4-fpm.sock
- 若
/var/www/html/admin/index.php不存在,说明PiHole安装不完整,需重新安装PiHole的web组件 - 若PHP套接字权限不是
www-data:www-data,执行:sudo chown www-data:www-data /run/php/php7.4-fpm.sock
2. 修改PiHole的Nginx配置(pihole.conf)
有两种可行修改方案:
方案一:根请求直接重定向到PiHole后台
将8080端口的根请求自动跳转到/admin(PiHole默认后台路径),修改后的配置如下:
server { listen 8080 default_server; listen [::]:8080 default_server; root /var/www/html; server_name _; autoindex off; error_page 404 /pihole/index.php; index index.php index.html index.htm; # 根请求重定向到admin后台 location / { return 301 /admin; } location /admin { root /var/www/html; index index.php index.html index.htm; # 确保动态请求能正确解析 try_files $uri $uri/ /admin/index.php?$args; } location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_param FQDN true; } location /*.js { index index.js; } location ~ /\.ht { deny all; } }
方案二:修正根目录的请求解析逻辑
若不想重定向,可修改根目录的try_files规则,让未匹配到的请求自动指向PiHole后台入口:
# 替换原location /块 location / { expires max; try_files $uri $uri/ /admin/index.php?$args; }
3. 验证配置并重启服务
# 检查Nginx配置语法是否正确 sudo nginx -t # 重启Nginx和PHP-FPM sudo systemctl restart nginx sudo systemctl restart php7.4-fpm
4. 确认Nginx加载了PiHole配置
检查sites-enabled目录是否有pihole.conf的软链接:
ls -l /etc/nginx/sites-enabled/
若没有,手动创建:
sudo ln -s /etc/nginx/sites-available/pihole.conf /etc/nginx/sites-enabled/
之后再次重启Nginx。
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

