我已将 nginx 配置为使用 auth_basic 对目录进行密码保护。密码提示出现,登录正常。
但是...如果我拒绝输入我的凭证,而是连续多次按下“退出”键,页面最终将加载不带 CSS 和图像的页面。
换句话说,不断地告诉登录提示消失,在某个时候无论如何都会允许页面加载。
这是 nginx 的问题,还是我的配置的问题?
这是我的虚拟主机:
31 server {
32 server_name sub.domain.com;
33 root /www/sub.domain.com/;
34
35 location / {
36 index index.php index.html;
37 root /www/sub.domain.com;
38 auth_basic "Restricted";
39 auth_basic_user_file /www/auth/sub.domain.com;
40 error_page 404 = /www/404.php;
41 }
42
43 location ~ \.php$ {
44 include /usr/local/nginx/conf/fastcgi_params;
45 }
46 }
我的服务器运行 CentOS + nginx + php-fpm + xcache + mysql
答案1
您的配置,nginx 将仅使用最具体的位置块。因此,当您请求 *.php 文件时,它将使用位置 ~ .php$ 块,而不会看到身份验证基本配置。
.css、.js 等文件之所以能正常工作,是因为它们与 PHP 位置块不匹配
您还需要将您的身份验证基本配置添加到 php 文件位置块。