nginx配置用户名和密码认证!
HTTP Basic Authentication协议
-
ngx_http_auth_basic_module模块使用HTTP Basic Authentication协议来验证用户名和密码,从而实现对资源的访问限制。 -
HTTP Basic Authentication协议相关
-
-
客户端请求web服务器时,如果返回
401Unauthorized表示需要身份认证,响应头中会包含WWW-Authenticate字段,例如WWW-Authenticate: Basic realm="closed site",realm表示认证域,浏览器收到这个响应后会弹出用户名密码输入框。
-
客户端发送认证信息,在请求头中
Authorization字段中传入用户名和密码。格式为Authorization:Basic Base64(用户名:密码)。
-
HTTP Basic Authentication认证通过以后浏览器会缓存认证信息,下次访问时能够看到浏览器会在请求中自动加上Authorization头信息。
-
auth_basic指令
-
作用:启用
HTTP Basic Authentication认证。 -
语法:
auth_basic string | off;-
auth_basic string表示启用HTTP Basic Authentication认证。 -
auth_basic off取消继承自上一层的auth_basic指令的设置。
-
-
默认值:
auth_basic off; -
作用域:
http, server, location, limit_except
auth_basic_user_file指令
1. 作用:配置用户名密码文件。
2. 语法:auth_basic_user_file file; 指定认证文件,文件格式为:
user1:password1
user2:password2
3. file参数中可以包含变量。
4. 配置文件中的密码可以为以下几种格式:
-
crypt()函数加密,可以通过Apache HTTP Server的htpasswd工具生成,或openssl passwd命令生成。-
htpasswd方式:
-
安装:sudo yum install httpd-tools
-
-
-
加密:
htpasswd -s conf/htpasswd user1# 使用SHA1算法生成user1用户的密码并更新到conf/htpasswd文件中
-
-
-
-
openssl方式:
-
系统一般都预装了openssl
-
openssl passwd -6 -salt "bKaMt2" 3edc4rfv # 使用SHA512算法对3edc4rfv加密,生成后的密码手动加入到htpasswd文件中,格式为:
用户名:加密后的密码
-
-
-
htpasswd或openssl passwd工具计算的MD5值。
-
htpasswd:
htpasswd -m -s conf/htpasswd user5# MD5算法配置user5用户的密码并更新到conf/htpasswd文件中 -
openssl方式:
openssl passwd -1 34erdfcv# MD5算法对3edc4rfv加密,生成后的密码手动加入到conf/htpasswd文件中,格式为:用户名:加密后的密码
-
-
RFC 2307定义的
{scheme}data格式。scheme为加密方案,可以为PLAIN、SHA、SSHA;data为Base64编码的数据。-
PLAIN方式加密举例:PLAIN是明文方式,不推荐,格式为:
user7:{PLAIN}8ik7uj,其中user7为用户名,8ik7uj为密码。 -
SHA方式加密举例:
printf "123qwe" | openssl dgst -sha1 -binary | base64# 对123qwe加密,生成后手动加入到htpasswd文件中,格式为:用户名:{SHA}加密后的密码 -
SSHA方式加密举例:
-
安装:
sudo yum install openldap-servers openldap-clients -
加密 :
slappasswd -h "{SSHA}" -s "3edc3edc"# 对3edc3edc加密,生成后手动加入到htpasswd文件中,格式为:用户名:{SSHA}加密后的密码
-
-
测试
- nginx配置
location /test { auth_basic "closed site"; auth_basic_user_file /usr/local/nginx/conf/htpasswd; alias /usr/local/nginx/html; } -
htpasswd文件样例

- 测试
curl --request GET \ --url http://xxx.xxx.xxx.xxx/test/index.html \ --header 'Accept: */*' \ --header 'Accept-Encoding: gzip, deflate, br' \ --header 'Authorization: Basic dXNlcjk6M2VkYzNlZGM=' \ --header 'Connection: keep-alive' \ --header 'User-Agent: PostmanRuntime-ApipostRuntime/1.1.0'

更多推荐

所有评论(0)