nginx下的用户认证auth_basic ,auth_basic_user_file

文章介绍了如何通过htpasswd工具生成加密密码,并在Nginx配置中设置访问控制,实现对特定页面的用户名和密码认证。在nginx.conf中配置location和auth_basic指令,当访问时出现401错误表示认证未通过,而成功认证后则能访问到保护的内容。

当我们不想要网页的某个重要页面被其他用户访问,可以启动认证,需要用户名和密码才能登录访问。

1.首先安装htpasswd,它能为我们给密码加密:

[root@www conf]# yum provides htpasswd
httpd-tools-2.4.6-98.el7.centos.7.x86_64 : Tools for use with the Apache HTTP Server
源    :@updates
匹配来源:
文件名    :/usr/bin/htpasswd
[root@www conf]# yum install httpd-tools  -y

2.生成密码:

[root@sc-nginx conf]# htpasswd -c /usr/local/scnginx/conf/htpasswd long
[root@localhost conf]# cat htpasswd 
long:$apr1$8A/6zU/7$PMJH5eG1oRXkBGpu7RK/x0

-c 指定htpasswd文件存放地址,htpasswd文件存放的路径在conf目录下,不要放在html目录下,因为它属于nginx的一个配置文件,给nginx提供密码的认证的文件,以及指定用户名long

3.在nginx.conf配置文件下的设置,例如状态统计认证:

        location ~ /into {                      #访问位置为/into
                stub_status   on;                        #打开状态统计功能
                access_log off;                          #关闭此位置的日志记录
                auth_basic "scweb";
                auth_basic_user_file htpasswd;
        }

4.测试
访问测试
在这里插入图片描述

若登录错误,在网页右键检查的网络中可发现存在401错误,及无权限,以及我们设置的auth_basic "scweb";
在这里插入图片描述
若登录正确则可以访问到我们用户认证内的信息:
在这里插入图片描述

配置 Nginx 的 `auth_basic` 功能并指定用户密码文件,需在 Nginx配置文件中使用 `auth_basic` 和 `auth_basic_user_file` 两个指令。具体步骤如下: 1. **启用基本认证**:在 `location`、`server` 或 `http` 块中设置 `auth_basic` 指令,用于定义认证域的名称。例如: ```nginx location /secure/ { auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.htpasswd; } ``` 2. **指定用户密码文件**:使用 `auth_basic_user_file` 指令指向用户密码文件的路径,该文件包含用户名和加密后的密码信息。路径可以是任意合法的文件系统路径,但需确保 Nginx 进程对该路径具有读取权限 [^2]。 3. **生成用户密码文件**:可以使用 `htpasswd` 工具生成密码文件。如果系统中未安装该工具,可通过安装 Apache 工具包获取。示例命令如下: ```bash htpasswd -c /etc/nginx/.htpasswd username ``` 该命令会创建一个名为 `username` 的用户,并提示输入密码。若需添加更多用户,可省略 `-c` 参数: ```bash htpasswd /etc/nginx/.htpasswd anotheruser ``` 4. **验证配置并重启 Nginx**:修改完配置文件后,需验证配置是否正确,然后重新加载 Nginx 配置以使更改生效: ```bash nginx -t systemctl reload nginx ``` 在配置过程中需要注意权限问题。例如,Nginx 进程需要对 `.htpasswd` 文件具有读取权限。如果权限设置不当,可能会导致 500 内部服务器错误。日志中可能出现类似以下错误信息: ``` open() "/etc/nginx/.htpasswd" failed (13: Permission denied) ``` 此时应检查文件权限,并确保文件路径与配置一致 [^3]。 此外,密码文件的内容应妥善保护,避免泄露。建议将文件放置在非公开访问路径下,并限制其访问权限。 ### 示例配置 ```nginx server { listen 80; server_name example.com; location /secure/ { auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.htpasswd; root /var/www/secure; } } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值