Nginx Basic Auth和子文件夹

mr_*_*app 3 php fastcgi nginx password-protection basic-authentication

我在基本auth procted文件夹中的子文件夹有问题.在受保护的文件夹中,我有一个名为phpmyadmin的文件夹,其中包含phpmyadmin.当基本激活时,我无法运行phpmyadmin.当我调用该文件夹时,我得到一个另存为对话框(类型:application/octet-stream(18,3 KB)).

这里是mysites的重要部分 - 可用/默认

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;
}
Run Code Online (Sandbox Code Playgroud)

任何想法,我如何在基本认证保护子文件夹中运行php?

Mic*_*rtl 6

您可以在location ~ \.php$块内重复/administration/块.

作为一种解决方法,我也成功地使用了这个设置,这使我免于在复杂场景中反复重复PHP配置.

location ^~ /administration/ {
    auth_basic            "Restricted Area";
    auth_basic_user_file  /var/www/myproject/sec/htpasswd;
    location ~ \.php$ {
        try_files /dummy/$uri @php;
   }
}

location ~ \.php$ {
    try_files /dummy/$uri @php;
}

location @php {
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}
Run Code Online (Sandbox Code Playgroud)

它基本上使用PHP配置的命名位置.不幸的是你无法在任何地方使用这样的位置.但它适用try_files.您应该确保/dummy/服务器上没有目录.