nginx配置用户名和密码认证
|
admin
2025年6月28日 22:28
本文热度 474
|
HTTP Basic Authentication协议
ngx_http_auth_basic_module
模块使用HTTP Basic Authentication
协议来验证用户名和密码,从而实现对资源的访问限制。HTTP Basic Authentication
协议相关
- 客户端请求web服务器时,如果返回
401
Unauthorized表示需要身份认证,响应头中会包含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 编辑过