Nginx:基本身份验证保护文件夹和PHP文件,但不保护图像

时间:2014-02-03 16:11:31

标签: authentication nginx

我有以下Nginx配置

location ^~ /members {
    auth_basic "Members Area";
    auth_basic_user_file /home/*user*/public/*site*/www/members/.htpasswd;

    location ~ \.php$ {
        include     /data/config/nginx/fastcgi_params;
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    # Set header expirations for static content
    location ~* \.(?:ico|css|js|jpe?g|JPG|png|svg|woff|mp4|flv)$ {
        access_log      off;
        log_not_found   off;
        expires         365d;
    }            
}

打算密封/ members /目录,以及(.php,.jpg,.mp4等)中的所有内容。

在它的当前状态下,它会提示用户使用用户/传递框作为.php文件的预期,但它不会为jpg图像激活auth。

为清楚起见,出现以下行为:

  • http:// 网站 / members - 用户提示输入用户/传递
  • http:// site /members/category.php - 用户提示输入用户/传递
  • http:// 网站 /members/content/upload/example.jpg - 用户无需登录即可查看内容

/ members / content文件夹是文件根文件夹之外的文件夹的符号链接,我想知道这是否是一个潜在的原因。

我尝试了很多不同的配置,例如删除/ members块上的^〜,但是无法获得工作配置来覆盖目录中的所有文件。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我认为您只需要定义一个新块来捕获成员目录中的图像

location ~ ^/members.*\.(?:ico|css|js|jpe?g|JPG|png|svg|woff|mp4|flv)$ {
   auth_basic "Members Area";
   auth_basic_user_file /home/*user*/public/*site*/www/members/.htpasswd;
}