Nginx 基本身份验证和子文件夹

Nginx 基本身份验证和子文件夹

我在使用基本身份验证保护的文件夹中的子文件夹时遇到了问题。在受保护的文件夹中,我有一个名为 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

相关内容