nginx中的密码保护/后台文件夹

时间:2011-01-01 23:09:12

标签: nginx passwords

我正在尝试使用密码保护名为backoffice的文件夹。 我想密码保护文件夹及其下面的所有内容(包括PHP文件)。

我似乎无法在nginx中使用它。

我的配置目前是:

server {
    listen   80;
    server_name  www.example.com;
    access_log  /var/log/nginx/localhost.access.log;
    access_log off;
    client_max_body_size 50m;

    ## Default location
    location / {
        root   /var/www/clients/client3/web21/web;
        index  index.php;
    }

    ## Images and static content is treated different
    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
      access_log        off;
      expires           30d;
      root /var/www/clients/client3/web21/web;
    }

    ## Parse all .php file in the /var/www directory
    location ~ .php$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass   unix:/dev/shm/fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/clients/client3/web21/web$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param  QUERY_STRING     $query_string;
        fastcgi_param  REQUEST_METHOD   $request_method;
        fastcgi_param  CONTENT_TYPE     $content_type;
        fastcgi_param  CONTENT_LENGTH   $content_length;
        fastcgi_intercept_errors        on;
        fastcgi_ignore_client_abort     off;
        fastcgi_connect_timeout 30;
        fastcgi_send_timeout 30;
        fastcgi_read_timeout 30;
    }

    ## Disable viewing .htaccess & .htpassword
    location ~ /\.ht {
        deny all;
    }

    # Password Protect important Directories
    location ^~ /backoffice {
        root /var/www/clients/client3/web21/web;
        auth_basic            "Restricted";
        auth_basic_user_file   /var/www/clients/client3/web21/htpass;
    }
}

1 个答案:

答案 0 :(得分:10)

您需要将php位置块嵌套在受保护的目录块中。像这样:

location ^~ /protected {
    auth_basic              "Restricted";
    auth_basic_user_file    /usr/local/nginx/conf/password;

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        include        fastcgi.conf;
    }
}