我在Debian Squeeze上安装了PHP-fpm的Nginx.
目录树是:
> / var / www / mysite
> index.PHP
> secret_folder_1
> admin.PHP
> static.html
> secret_folder_2
> admin.PHP
> static.html
>图片
> img01.jpg
我需要使用basic_auth关闭secret_folder_1和secret_folder_2.
现在配置看起来像:
location ~ /secret_folder_1/.+\.PHP$
{
root /var/www/mysite/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /var/www/mysite$fastcgi_script_name;
include fastcgi_params;
auth_basic "Restricted Access";
auth_basic_user_file /path/to/.passwd;
}
location ~ /secret_folder_1/.*
{
root /var/www/mysite/;
auth_basic "Restricted Access";
auth_basic_user_file /path/to/.passwd;
}
secret_folder_2的相同配置.
这是正常的吗?我的意思是,第一个位置用于在受限文件夹中提供PHP文件,第二个位置用于提供静态文件.
可以简化吗?
最佳答案
嵌套位置可能更好:
location /secret_folder_1 {
root /var/www/mysite/;
auth_basic "Restricted Access";
auth_basic_user_file /path/to/.passwd;
location ~* \.PHP${
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
}
}
请注意,您应该使用$document_root变量而不是hardcoded / var / www / mysite /来定义SCRIPT_FILENAME参数:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;