nginx配置用户名和密码认证
				
									
					
					
						|  | 
							admin 2025年6月28日 22:28
								本文热度 1544 | 
					
				 
				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指令的设置。
- 作用域:http, server, location, limit_except
auth_basic_user_file指令 
2. 语法:auth_basic_user_file file;  指定认证文件,文件格式为:
user1:password1
user2:password2
- crypt()函数加密,可以通过Apache HTTP Server的htpasswd工具生成,或openssl passwd命令生成。
- 安装:sudo yum install httpd-tools
- 加密:htpasswd -s conf/htpasswd user1# 使用SHA1算法生成user1用户的密码并更新到conf/htpasswd文件中
- 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}加密后的密码
- 安装: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;
 }
 
 
- 测试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'
 
 
阅读原文:原文链接
该文章在 2025/7/1 23:38:33 编辑过