加密文件
18年的时候当时为了给朋友下东西,把一些软件放到了之前的服务器上,后来突发奇想想应该给下载的文件加个访问密码,然后找到了 htpasswd 这个东东,后来折腾了些时间弄好了之后发现用的并不多(毕竟小水管,而且我以前发现只要使用http请求就可以跳过验证,以为是配置原因特无语,不过貌似现在又好了..),今天去看发现下载文件夹没了。。但是配置文件还在,所以打算再把htpasswd重新记录下,以后也方便一点。
以后 download 页面的文件首选服务器下载
安装
在 nginx centos7 环境下使用 yum 命令安装 htpasswd:
代码语言:javascript复制 yum -y install httpd
使用
添加新账户
创建一个用户并设置密码(新建并覆盖.htpasswd文件)New password:后输入要创建的密码,Re-type new password:后重复输入创建的密码即可成功添加(添加成功后的文件在niginx conf目录)
代码语言:javascript复制 [root] htpasswd -c /usr/local/nginx/.htpasswd admin
添加其他账户
使用 -b 命令在已创建账户文件基础下添加另一个账户(账户名后跟密码,无交互)
代码语言:javascript复制 [root] htpasswd -b /usr/local/nginx/.htpasswd guest 0
创建与新建账户
删除账户
使用 -D 命令在已创建账户文件基础下删除一个指定账户(htpasswd无法修改账号密码,需要-D删除后再-b添加)
代码语言:javascript复制 [root] htpasswd -D /usr/local/nginx/.htpasswd guest
其他
nginx 配置
path 为加密文件夹的路径,后面 .pvt | zip 为需要加密文件的格式,auth_basic 为加密弹窗标题,auth_basic_user_file 为 .htpasswd 加密文件路径(用于验证,第一次 -c 时的路径)
代码语言:javascript复制location ~ ^/path/.*.pvt|.zip$ {
auth_basic "Restricted .pvt.zip-files";
auth_basic_user_file /usr/local/nginx/.htpasswd;
}
配置完成后,访问相关文件夹的指定加密文件时会弹出验证
默认弹窗
401验证不通过会自动跳转到默认的 401 页面,如需自定义 401 页面,需要在以上 location 后跟以下配置项即可
代码语言:javascript复制error_page 401 /401.html;
location = /401.html {
auth_basic off;
}
指定 401 页面
意外发现
测试下载url时发现全站链接加了/后直接401了,排查配置项发现注释掉了重定向..
Bug-1~
以上,有问题评论区反馈。