配置nginx对外提供下载,并且要求输入用户名密码
需求:
1.安装密码生成工具
yum -y install httpd-tools
htpasswd说明
htpasswd 是 Apache 密码生成工具,Nginx 支持 auth_basic 认证,因此我门可以将生成的密码用于 Nginx 中
2. 生成用户和密码文件
语法:htpasswd (选项) (参数)
-c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容.
-n 不更新passwordfile,只将加密后的用户名密码显示在屏幕上;
-m 默认采用MD5算法对密码进行加密
-d 采用CRYPT算法对密码进行加密
-p 不对密码进行进行加密,即使用普通文本格式的密码
-s 采用SHA算法对密码进行加密
-b 命令行中一并输入用户名和密码而不是根据提示输入密码,可以看见明文,不需要交互
-D 删除指定的用户
生成一个用户名为test.txt 的文件 ,将用户名test存储在其中,密码手动收入,使用md5加密
htpasswd -cm test.txt test
3. 配置nginx认证
找到 nginx 配置文件,通常默认的配置文件在/usr/local/nginx/conf/nginx.conf
(也有可能在/etc/nginx,具体情况具体对待),要对整个站点开启验证,需在配置文件中的server
加上认证配置
auth_basic
和 auth_basic_user_file
server {
listen 80;
server_name localhost;
# ...
auth_basic "请输入用户和密码"; # 验证时的提示信息
auth_basic_user_file /usr/local/nginx/password; # 认证文件
location /download {
root /data/download/;
index index.html index.htm;
}
# ...
}
4. 重启/重载Nginx使站点的认证生效
检测配置文件是否正确
nginx -t
重启
nginx -s reload
5.测试
如果你的服务器上 /data/download/ 目录下有文件a.txt
在浏览器中访问localhost:80/download/a.tx 此时就会让你输入用户名密码才可以下载了
快去试试吧