Nginx配置Basic_Auth登录认证,NGINX使用 HTTP 基本身份验证限制访问

1.安装配置NGINX

2.生成密码文件

  1. 这里我们使用htpasswd来生成. yum install -y httpd-tools
  2. htpasswd是开源的http服务器Apache Http Server的一个命令行工具.可以用来创建和更新基本认证
    的用户认证密码文件.其中htpasswd必须对密码文件有读写权限.
  3. 参数如下:
    3.1 -b -->密码直接写在命令行中,而非使用提示输入的方式
    3.2 -c—>创建密码文件,如果文件存在,则覆盖
    3.3 -n—>不更新密码文件,将用户名密码进行标注输出
    3.4 -m—>使用md5算法对密码处理
    3.5 -d—>使用crypt算法对面处理
    3.6 -s—>使用sha算法对密码处理
    3.7 -p—>不对密码加密处理,使用明文
    3.8 -D—>从密码文件中删除指定用户记录
htpasswd -bc /usr/local/nginx/nginx-1.18.0/conf/.htpasswdadmin1 123456

2.1创建密码文件

要创建用户名-密码对,请使用密码文件创建实用程序,例如 apache2-utils 或 httpd-tools

验证是否安装了apache2-utils(Debian,Ubuntu)或httpd-tools(RHEL / CentOS / Oracle Linux)。

创建密码文件和第一个用户。使用 -c 标志运行实用程序(创建新文件),将文件路径名作为第一个参数,将用户名作为第二个参数:htpasswd

$ sudo htpasswd -c /etc/apache2/.htpasswd user1

按 Enter 并在出现提示时键入 user1 的密码。

创建其他用户密码对。省略 -c 标志,因为该文件已存在:

$ sudo htpasswd /etc/apache2/.htpasswd user2

您可以确认该文件包含配对的用户名和散列密码:

$ cat /etc/apache2/.htpasswd
user1:$apr1$/woC1jnP$KAh0SsVn5qeSMjTtn0E9Q0
user2:$apr1$QdR8fNLT$vbCEEzDj7LyqCMyNpSoBh/
user3:$apr1$Mr5A0e.U$0j39Hp5FfxRkneklXaMrr/

为 HTTP 基本身份验证配置 NGINX 和 NGINX Plus
在要保护的位置内,指定 auth_basic 指令并为密码保护区域命名。请求输入凭据时,区域的名称将显示在用户名/密码对话框窗口中:

location /api {
    auth_basic "Administrator’s Area";
    #...
}
使用包含用户/密码对的 .htpasswd 文件的路径指定 auth_basic_user_file 指令:

location /api {
    auth_basic           "Administrator’s Area";
    auth_basic_user_file /etc/apache2/.htpasswd; 
}

或者,您可以使用基本身份验证限制对整个网站的访问,但仍公开某些网站区域。在这种情况下,请指定取消从上层配置级别继承的 auth_basic 指令的参数:off

server {
    ...
    auth_basic           "Administrator’s Area";
    auth_basic_user_file conf/htpasswd;

    location /public/ {
        auth_basic off;
    }
}

将基本身份验证与 IP 地址的访问限制相结合
HTTP基本认证可以有效地与IP地址的访问限制相结合。至少可以实现两种方案:

用户必须经过身份验证并具有有效的 IP 地址
用户必须经过身份验证或具有有效的 IP 地址
使用允许和拒绝指令允许或拒绝来自特定 IP 地址的访问:

location /api {
    #...
    deny  192.168.1.2;
    allow 192.168.1.1/24;
    allow 127.0.0.1;
    deny  all;
}

将仅授予网络访问权限,不包括该地址。请注意,和 指令将按其定义的顺序应用。192.168.1.1/24192.168.1.2allowdeny

将 IP 和 HTTP 身份验证的限制与满足指令相结合。 如果将指令设置为 ,则在客户端同时满足这两个条件时授予访问权限。如果将指令设置为 ,如果客户端至少满足一个条件,则授予访问权限:allany

location /api {
    #...
    satisfy all;    

    deny  192.168.1.2;
    allow 192.168.1.1/24;
    allow 127.0.0.1;
    deny  all;

    auth_basic           "Administrator’s Area";
    auth_basic_user_file conf/htpasswd;
}

3完整示例

完整示例
该示例显示了如何通过简单的身份验证和 IP 地址的访问限制来保护状态区域:

http {
    server {
        listen 192.168.1.23:8080;
        root   /usr/share/nginx/html;
        location /api {
            api;
            satisfy all;
            deny  192.168.1.2;
            allow 192.168.1.1/24;
            allow 127.0.0.1;
            deny  all;
            auth_basic           "Administrator’s Area";
            auth_basic_user_file /etc/apache2/.htpasswd; 
        }
    }
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大白菜程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值