1. Nginx自带的登录认证
1.1. http_auth_basic_module
1.1.1. auth_basic
Syntax: auth_basic string | off ;
Default: auth_basic off ;
Context: http,server,location,limit_expect
1.1.2. auth_basic_user_file
Syntax: auth_basic_user_file path ;
Default: Close
Context: http,server,location,limit_expect
1.2. 说明
- auth_basic中的string 是登陆的提示信息,off代表关闭继承上级的auth_basic认证
- auth_basic_user_file 指定存放用户名和密码的文件,建议也放在配置文件中,命名为$CONF/auth_user_file
auth_basic_user_file 文件加密方式支持以下三种:
Nginx + LUA 实现高效验证
- Nginx 与 LDAP 打通,利用nginx_auth_ldap模块进行操作
在实际的应用中,很少使用Nginx自带的认证系统,一般都是由Java、Python等语言实现统一的认证登陆系统,将用户名和加密后的密码存放在数据库中。Nginx自带的认证系统仅作为了解即可。
2. 案例
2.1. Nginx配置
[root@centos-81 conf.d]# cat auth.conf
server {
listen 80 ;
server_name www.heyang.com ;
root /usr/share/nginx/html;
auth_basic "Please login !" ;
auth_basic_user_file /etc/nginx/auth_user_file ;
location / {
index index.html index.htm;
}
location /bsfw {
index index.html index.htm;
auth_basic off ;
}
location ~ /gt[a-z]+ {
proxy_pass http://www.jsmlr.gov.cn ;
auth_basic off ;
}
error_page 500 502 503 504 /50x.html;
}
预期结果: www.heyang.com 域名中除了 ~ /gt[a-z]+ 和 /bsfw 之外,全部需要验证,即使/bsfw中引用的资源。
2.2. 创建访问用户
[root@centos-81 ~]# htpasswd -c /etc/nginx/auth_user_file hy01 ## 交互式
[root@centos-81 ~]# htpasswd -b /etc/nginx/auth_user_file hy02 123456 ## 非交互式
[root@centos-81 ~]# cat /etc/nginx/auth_user_file ## 使用盐值加密后,无法简单解密
hy01:$apr1$RfzVienZ$7N2XC5Eqo7x9xLYQbMlu4.
hy02:$apr1$NBUQTps0$VrSK/MdGbk3gleb7dFRA61