Nginx配置基础认证

2021-11-18  本文已影响0人  康小曹

基础认证简介:

在某些情况下,我们希望对服务器上的一些资源进行限制,例如服务器 /fakerealm 路径下的所有资源或域,必须先进行身份验证然后才能访问资源。

客户端以 : 连接用户名和密码后,再经 Base64 编码,通过 Authorization 请求头发送该密文至服务端进行验证,每次请求都需要重复发送该密文;

可见Basic认证过程简单,安全性也低,存在泄露个人账号信息以及其他诸多安全问题,最好在实现了Transport Layer Security (TLS)的情况下去使用。

对于这个需求我们可以通过 HTTP Basic authentication 协议来完成,Nginx 使用 ngx_http_auth_basic_module 模块支持 HTTP基本身份验证功能 。

1. 安装

yum -y install httpd

2. 添加配置

server {

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

其中有几个注意点:

  1. auth_basic:随便填,有就行,会显示在输入用户名密码的弹框中;
  2. auth_basic_user_file:告诉服务器去哪个文件中匹配访问者输入的用户名和密码;

如果是配合 HTTPS 使用,一般会将 80 端口的 HTTP 请求转发到 443 的 HTTPS 请求中,所以上述配置应该写在 HTTPS 的 443 配置中:

配合HTTPS

另外,也可以全局配置基础认证,然后排除一些域。即该端口下,除被排除的域,所有的请求都需要输入用户名和密码进行认证,详细配置见官方文档;

3. 添加账户

// 进入相关文件夹
cd /etc/nginx/realmdir

// 文件名:htpasswd,用户名:user 密码password
htpasswd -bdc htpasswd user password

其中 htpasswd 需要和上一步中的文件名匹配,意思是在 htpasswd 这个文件中搜索账户是否匹配;

可以在一个文件中配置多个账户:

添加多个账户

4. 重启Nginx

nginx -s -reload

效果:

效果

官方文档:

https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/

上一篇 下一篇

猜你喜欢

热点阅读