我正在尝试使用密码保护名为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;
}
}
答案 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;
}
}