前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何为Nginx配置HTTP基本认证?

如何为Nginx配置HTTP基本认证?

作者头像
用户1560186
发布2019-11-19 20:40:58
7.4K0
发布2019-11-19 20:40:58
举报
文章被收录于专栏:运维录运维录

开始之前


在某些情况下,我们希望对服务器上的一些资源进行限制,例如服务器/api路径下的所有资源,必须先进行身份验证然后才能访问资源,对于这个需求我们可以通过 HTTP Basic authentication 协议来完成,Nginx 使用 ngx_http_auth_basic_module 模块支持 HTTP基本身份验证 功能 。

HTTP基本身份验证

RFC 7235 定义了一个HTTP身份验证框架,服务器可以用来针对客户端的请求发送challenge(质询信息),客户端则可以用来提供身份验证凭证。

质询与应答的工作流程如下:

身份验证框架中最常用的HTTP认证方案是 "HTTP Basic authentication"(RFC 7617)。该方案中规定使用"用户的ID/密码"作为凭证信息,并且使用 base64算法进行编码。由于用户 ID 与密码是是以明文的形式在网络中进行传输的(base64 可逆),所以基本验证方案并不安全,建议配合 HTTPS协议使用。

配置步骤

1. nginx 配置文件

代码语言:javascript
复制
cat /etc/nginx/conf.d/default.conf

server {

    listen 80;
    server_name  www.demo.com;
    
    #..其它配置项目省略
    
    location ^~ /api {
        auth_basic "authentication";
        auth_basic_user_file conf.d/.htpasswd;
    }
    
    #..其它配置项目省略

}

2. 创建一个 htpasswd帐密文件

代码语言:javascript
复制
# 格式每行一个账户
用户名:密码

# nginx 可以直接使用 Apache 的 htpasswd命令创建的密码文件。
# 例如创建一个文件名为 htpasswd、帐号为 dongnan、密码为 zongming.net 。
htpasswd -bdc htpasswd dongnan zongming.net

如果没有 htpasswd命令,也可以使用 openssl passwd 命令代替。

代码语言:javascript
复制
echo  -n 'dongnan:' >> .htpasswd
openssl passwd -apr1 zongming.net >> .htpasswd

cat -A .htpasswd
dongnan:$apr1$nM8/P9Os$7hFSdSKCXejSxMYagNLYE/$

3. 重启 nginx

代码语言:javascript
复制
nginx -t && nginx reload

4. 验证

小结

最后来总结下文章中的知识点

  • 使用 auth_basic 指令,启用 HTTP基本身份验证。
  • 使用 auth_basic_user_file 指令, 指定帐密文件位置。
  • 如果没有 Apache htpasswd 命令,可以使用 openssl 命令代替。
  • HTTP基本身份验证,使用 base64算法进行编码,并以明文的形式在网络中进行传输,建议配合 HTTPS协议使用。

参考

http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Authentication

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HTTP基本身份验证
  • 配置步骤
  • 小结
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档