我在使用基本身份验证保护的文件夹中的子文件夹时遇到了问题。在受保护的文件夹中,我有一个名为 phpmyadmin 的文件夹,其中包含 phpmyadmin。当基本身份验证激活时,我无法运行 phpmyadmin。当我调用该文件夹时,我得到了一个另存为对话框(类型:application/octet-stream (18,3 KB))。
以下是 mysites-available/default 的重要部分
location ^~ /administration/ {
auth_basic "Restricted Area";
auth_basic_user_file /var/www/myproject/sec/htpasswd;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
有什么想法,如何在受 basic-auth 保护的子文件夹中运行 php?
编辑:没有 basic_auth phpmyadmin 运行没有问题。
答案1
基本上你必须这样做:(伪代码,抱歉)
location /administration/ {
<auth_stuff here>
location ~ \.php {
<php inside auth here>
}
}
这是因为 auth 仅影响其所在的位置。
我猜您可以尝试删除^~
(这会告诉 nginx 停止搜索,因此 php 位置永远不会与该目录匹配)并查看它是否仍然需要身份验证,尽管 PHP 块中没有明确要求。可能不会...
无关但也请阅读http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP