Nginx基本认证配置¶
NGINX支持基本身份认证(basic authentication)和身份验证子请求(authentication subrequests)。NGINX Plus专有模块使用可验证JSON Web Tokens(JWTs)可以支持身份验证标准OpenID连接的第三方身份验证程序集成。
HTTP 基本认证¶
NGINX使用的基本认证密码和Apache是一样的,格式类似如下:
# comment
name1:password1
name2:password2:comment
name3:password3
每行配置有2个或3个字段,第3个字段是可选的注释;第2个字段的密码是使用C函数 crypt()
加密的密码,可以使用 openssl passwd
命令生成
创建一个名为
huatai
的用户,密码使用openssl passwd -apr1 <密码>
生成,密码文件的配置可以位于/etc/nginx/.htpasswd
:
USER=huatai
PASSWORD=XXXXXXX
printf "${USER}:$(openssl passwd -apr1 ${PASSWORD})\n" >> /etc/nginx/.htpasswd
修订
/etc/nginx/nginx.conf
在 配置中 对应段落添加:
location / {
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
}
重启nginx:
systemctl restart nginx
部分目录关闭认证¶
上文配置饿了 /
目录访问需要密码认证,但是也可能某些目录需要开放给用户下载,例如我在 /download
目录下提供一些文件给用户直接下载无需认证:
location / {
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
}
location /download/ {
auth_basic off;
}
这样就能够在完成认证的同时使得部分目录不需要认证就可以访问