我已经在 nginx 中设置了 auth basic 并阻止了其他 ip,例如:
location / {
auth_basic "Restricted Area";
auth_basic_user_file .htpasswd;
allow 127.0.0.1;
deny all;
}
username/password
我可以使用提供的内容登录,.htpasswd
但是 nginx 中的错误日志显示如下错误:
user "memcache" was not found in "/etc/nginx/.htpasswd"
no user/password was provided for basic authentication
有什么建议可以解释为什么会发生这种情况以及如何消除它?
答案1
这可能不是完美的解决方案,但我必须将memcache
新用户添加到.htpasswd
文件中。现在,我没有那个错误user not found
。但那no user/password was provided for basic authentication
仍然发生。我到处探索,找到了Igor Sysoev
Nginx 创建者的这篇文章:
HTTP 基本身份验证的工作原理如下:
- 浏览器请求无需用户/密码的页面。
- 服务器响应 401 页面,并发送领域。
- 此时,access_log 中会出现 401 代码,error_log 中会出现消息“没有用户/密码...”。
- 浏览器显示领域/登录名/密码提示。
- 如果用户按下取消键,浏览器将显示收到的 401 页面。
- 如果用户输入登录名/密码,则浏览器将使用登录名/密码重复请求。
然后,直到您退出浏览器,它会将这些登录名/密码与受保护层次结构中的所有请求一起发送。
答案2
我不需要添加用户 memcache,而只需要安装 memcached,然后它就可以为我工作了。
server {
# Change these settings to match your machine
listen 80;
server_name yourdomain.com;
satisfy any;
allow 127.0.0.1;
deny all;
# Restrict Access
auth_basic "Restricted";
auth_basic_user_file /var/www/.htpasswd;
access_log /var/log/nginx/domain_access.log;
error_log /var/log/nginx/domain_error.log;
# deny access to .htaccess files
location ~ /\.ht {
deny all;
}
}