nginx htpasswd 06/07/2020
最近更新于:

加密文件

18年的时候当时为了给朋友下东西,把一些软件放到了之前的服务器上,后来突发奇想想应该给下载的文件加个访问密码,然后找到了 htpasswd 这个东东,后来折腾了些时间弄好了之后发现用的并不多(毕竟小水管,而且我以前发现只要使用http请求就可以跳过验证,以为是配置原因特无语,不过貌似现在又好了..),今天去看发现下载文件夹没了。。但是配置文件还在,所以打算再把htpasswd重新记录下,以后也方便一点。

以后 download 页面的文件首选服务器下载

安装

在 nginx centos7 环境下使用 yum 命令安装 htpasswd:

                             yum -y install httpd 
                        

使用

添加新账户

创建一个用户并设置密码(新建并覆盖.htpasswd文件)New password:后输入要创建的密码,Re-type new password:后重复输入创建的密码即可成功添加(添加成功后的文件在niginx conf目录)

                             [root] htpasswd -c /usr/local/nginx/.htpasswd admin 
                        

添加其他账户

使用 -b 命令在已创建账户文件基础下添加另一个账户(账户名后跟密码,无交互)

                             [root] htpasswd -b /usr/local/nginx/.htpasswd guest 0 
                        
创建与新建账户

删除账户

使用 -D 命令在已创建账户文件基础下删除一个指定账户(htpasswd无法修改账号密码,需要-D删除后再-b添加)

                             [root] htpasswd -D /usr/local/nginx/.htpasswd guest 
                        

其他

nginx 配置

path 为加密文件夹的路径,后面 .pvt | zip 为需要加密文件的格式,auth_basic 为加密弹窗标题,auth_basic_user_file 为 .htpasswd 加密文件路径(用于验证,第一次 -c 时的路径)


  location ~ ^/path/.*\.pvt|.zip$ {
    auth_basic "Restricted .pvt.zip-files";
    auth_basic_user_file /usr/local/nginx/.htpasswd;
  }


配置完成后,访问相关文件夹的指定加密文件时会弹出验证

默认弹窗

401验证不通过会自动跳转到默认的 401 页面,如需自定义 401 页面,需要在以上 location 后跟以下配置项即可


  error_page 401 /401.html;
    location = /401.html {
      auth_basic off;
  }


指定 401 页面

意外发现

测试下载url时发现全站链接加了/后直接401了,排查配置项发现注释掉了重定向..

Bug-1~


以上,有问题评论区反馈。