Nginx部署Nuxt+Laravel项目时配置Phpmyadmin出现403错误如何解决
问题产生原因
- 权限不匹配:Nginx运行用户(默认www-data)对
/home/anjaan/desijewel/目录没有读取+执行权限,但对Laravel的/home/anjaan/desijewel/api/public目录有合法权限,所以指向public目录可正常访问,指向上级目录触发403。 - Location匹配优先级错误:你配置的
location /phpmyadmin是普通前缀匹配,优先级低于全局的location ~ \.php$正则匹配,访问phpmyadmin下的PHP文件时会直接命中全局PHP处理规则,使用全局root/home/anjaan/desijewel/api/public拼接路径,找不到对应文件触发权限错误。 - 路径匹配不一致:错误日志显示请求路径为
/jyoteshdb/,但你配置的匹配路径是/phpmyadmin,路径不匹配导致请求无法命中你写的phpmyadmin规则,被全局规则拦截。 - alias配置逻辑错误:alias所在的location块未单独配置PHP解析逻辑,直接使用全局PHP规则时会拼接错误的文件路径,同时你配置的alias指向
/home/anjaan/desijewel/,没有定位到phpmyadmin的实际目录,也会导致文件找不到。
解决方案
- 首先修正目录权限,给Nginx运行用户授予合法权限:
chown -R anjaan:www-data /home/anjaan/desijewel chmod -R 750 /home/anjaan/desijewel
- 调整Nginx配置,替换原有的phpmyadmin location块,如果你实际访问路径是
/jyoteshdb,将下方的/phpmyadmin替换为/jyoteshdb即可:
# ^~ 标识让该前缀匹配优先级高于正则匹配,避免被全局PHP规则拦截 location ^~ /phpmyadmin { # 注意末尾加/,且路径要定位到phpmyadmin的实际根目录 alias /home/anjaan/desijewel/phpmyadmin/; index index.php; # 块内单独配置PHP解析,使用alias路径拼接文件地址 location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $request_filename; } }
- 验证配置合法性并重载Nginx生效:
nginx -t systemctl reload nginx
内容的提问来源于stack exchange,提问作者mukeshsoni
相关产品推荐
相关产品推荐

