美文网首页
Nginx配置基础认证

Nginx配置基础认证

作者: 康小曹 | 来源:发表于2021-11-18 11:41 被阅读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/

    相关文章

      网友评论

          本文标题:Nginx配置基础认证

          本文链接:https://www.haomeiwen.com/subject/gmedtrtx.html