配置Nginx运行Adminer时路径出现文件夹重复的原因是什么
问题原因
Nginx 中root和alias指令的路径处理逻辑不同:
root会将完整请求 URI 拼接在指定目录之后alias会直接替换 location 匹配的路径部分
你当前配置使用root,匹配规则为location /adminer,访问localhost/adminer时,Nginx 会把请求路径里的/adminer拼到/usr/share/webapps/adminer后面,最终生成的文件路径就是报错中的/usr/share/webapps/adminer/adminer/index.php,因此出现路径重复。
解决方案
有两种常用修正方式,二选一即可:
方案1:修改root路径
将root指向adminer的上级目录即可,配置示例:
server { listen 80; location /adminer { root /usr/share/webapps; index index.php; # 此处需补充php解析配置,否则php文件不会被处理 location ~ \.php$ { fastcgi_pass unix:/run/php-fpm.sock; # 按你实际的php-fpm监听地址调整,部分环境为127.0.0.1:9000 include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } }
方案2:使用alias指令
alias指令不会拼接路径,直接替换location匹配的部分,配置示例:
server { listen 80; location /adminer { alias /usr/share/webapps/adminer; index index.php; # 补充php解析配置 location ~ \.php$ { fastcgi_pass unix:/run/php-fpm.sock; # 按实际情况调整 include fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename; } } }
配置修改后重载Nginx即可生效。
内容的提问来源于stack exchange,提问作者Marlon
相关产品推荐
相关产品推荐

