jff*_*fng 14 authentication http nginx
我已经设置了一个简单的nginx服务器,将位置块配置为指向我想要服务的相应目录,并使用auth_basic模块设置基本身份验证.
但是,我的服务器在位置块下的每个页面请求上请求用户名:密码凭证,即使在多次向位置块下的不同页面提供它们(包括根位置目录)之后也是如此.
如何配置它来存储身份验证?这是nginx问题还是浏览器/请求标头问题?
这是nginx配置:
server {
listen 80;
server_name 0.0.0.0;
location /path/to/dir {
alias /var/www/dir/;
index index.html index.htm;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
try_files $uri $uri/ =404;
}
}
Run Code Online (Sandbox Code Playgroud)
在Ubuntu上运行nginx 1.4.6.
HTTP 身份验证信息存储在您的浏览器缓存中,只有在身份验证失败或来自不同领域(在auth_basic "Restricted";其Restricted中)时才应再次请求。
考虑到您的密码是正确的并且 Nginx 用户具有对密码文件的读取权限,您的配置很好(在这种情况下,它总是会失败 \xe2\x80\x94,但会在日志文件中发送一条错误消息来指示此错误)。这是最可能的原因,主要是如果您只有一个具有身份验证的位置。
\n\n另一个可能的原因是有多个auth_basic指令,并且它们使用不同的领域或密码。这对于应用程序生成的标头是相同的WWW-Authenticate(例如,如果您的后端应用程序除了 Nginx 之外还请求 HTTP 身份验证)。当存在不同的领域或密码失败时,您的浏览器将再次请求它。据我所知,没有浏览器会按 URL 存储身份验证,它始终是领域+主机名的组合。
如果您确实需要在不同位置使用不同的领域或密码,请确保它们在单个页面上不会重叠(例如,如果您对资产使用不同的密码:图像、样式或 JavaScript)。或者使用不同的主机 \xe2\x80\x94,但对于每个主机/领域组合将请求一次密码。
\n\n更新
\n\n使用\xe2\x80\x94是不寻常的,0.0.0.0因为\xe2\x80\x94已经让你的服务器监听所有接口/IP 地址。server_namelisten 80;
server_name _;如果您打算使用任何请求主机,请使用。
| 归档时间: |
|
| 查看次数: |
7539 次 |
| 最近记录: |