今天遇到一个有趣的小需求:通过URL访问并下载服务器上某个文件夹的文件,因此查找了资料进行了 Nginx 文件下载的配置,又因为不想完全对外开放,所以就加上了鉴权功能。这篇文章来记录一下相关配置步骤。
nginx.conf
完整配置内容server {
# 需要下载的文件端口(此处没有设置域名访问,直接使用IP)
listen 9778;
auth_basic "请输入用户和密码"; # 验证时的提示信息
auth_basic_user_file /etc/nginx/password; # 认证文件
location / {
# 需要下载的文件夹路径(可以自定义)
root /usr/local/filesDownload;
sendfile on; # 开启高效文件传输模式(零拷贝)
autoindex on; # 开启目录文件列表
autoindex_exact_size on; # 显示出文件的确切大小,单位是bytes
autoindex_localtime on; # 显示的文件时间为文件的服务器时间
charset utf-8,gbk; # 避免中文乱码
}
}
sendfile on;
在之前的文章【Nginx】学习笔记 01 - Nginx 最小配置 nginx.conf 简单分析 有过详细说明,在此不再赘述。
autoindex on;
启用或禁用目录列表输出(图源官方文档):
autoindex_exact_size on;
是否列出详细的文件大小,或者是舍入到 MB/GB(图源官方文档):
autoindex_localtime on;
列出时间(图源官方文档):
auth_basic "请输入用户和密码"; # 验证时的提示信息
auth_basic_user_file /etc/nginx/password; # 认证文件
鉴权配置,可以使用 Apache 的工具 htpasswd 实现(图源官方文档):
yum -y install httpd-tools
在安装的时候遇到一个报错:
找了一下资料,可以通过以下命令修复:
cd /var/lib/rpm/
for i in `ls | grep 'db.'`;do mv $i $i.bak;done
rpm --rebuilddb
yum clean all
创建一个用户名为 root 的用户信息(文件地址为 /etc/nginx/password
):
htpasswd -c /etc/nginx/password root
输入两次密码即可创建成功:
查看密码:
注意文件地址需要与 Nginx 配置文件保持一致。
至此所有配置完成。
htpasswd 默认使用的是 MD5 加密。
这一点可以通过文档或者命令进行查看:
htpasswd -h
也可以配置其他加密方式。
指令 | 解析 |
---|---|
-c | 创建密码文件(passwordfile),如果文件已经存在则会被重写和截断。 |
-m | 使用 MD5 加密。(自版本 2.2.18 开始是默认加密方式) |
-B | 使用 bcrypt 加密。 |
-d | 使用 crypt() 加密。(自版本 2.2.17 及以前是默认加密方式)不支持 Windows 和 Netware平台。 |
-s | 使用 SHA 加密。但目前该加密算法不安全。 |
-p | 明文密码。仅支持 Windows 和 Netware平台。 |
-D | 根据用户名删除加密文件中的指定用户。 |
passwdfile | 包含用户名和密码的文件名称。如果给出了 -c,则如果该文件不存在,则创建该文件;如果该文件存在,则重写并截断该文件。 |
username | 要在 passwdfile 中创建或更新的用户名。如果该文件中不存在username,则添加一个条目;如果存在,则修改密码。 |
交院“学霸“笔记上线啦开启浏览模式:俗话说“好记性不如烂笔头”,以最淡的墨水书写最深刻的记忆。同学们的日常学习离不开笔记,记好笔记也可以说是十分的重要。说不定你离学霸只差一个笔记的距离哦,让我们一起来看看云交院学霸们的笔记吧。一切好运都是努力得来的PART-1商务英语李家乐/LijiaLe笔记特点:橙色马克笔勾画重要语法,陌生字词的翻译备注在后,还怕复习不知道重点?贴画精心装饰笔记,对待学习都如此...
目录参考资料为什么要使用git工具使用git管理代码如何将代码clone到本地如何操作gitgit statusgit loggit add _filename_git add .git commit -m _message_再次更改文件后需要做哪些操作git reset _filename_文件的状态git reset _commitID_git checkout -b _name_ _template_git branchgit merge _branchName_git pushgit fetchgi
一、前言上面分享了IdentityServer4 两篇系列文章,核心主题主要是密码授权模式及自定义授权模式,但是仅仅是分享了这两种模式的使用,这篇文章进...
_itoa功能:把一整数转换为字符串用法:char * _itoa(int value, char *string, int radix); 详细解释: _itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.其中value为要转化的整数, radix是基数的意思,即先将value转化为radix进制的数,之后再保存在...
2021年度华南教育历史研学基地的复原工作重点集中在乐昌市坪石镇,之前通过南粤古驿道网站、媒体报道、相关的资料等对研学基地有了粗略的了解,对这段历史也非常向往,一直想亲自到坪石的各个遗址去看看,到了3月底终于得以成行。第一站 清洞村 中大文学院 3月26日,我们一行4人前往乐昌市坪石镇调研华南教育历史研学基地。早上8点半从广州市环市东路468大院出发,到达乐广高速的坪石出口,已将近12点。离出口不远处是考察的第一站清洞村。清洞村就在高速出入口不远处的斜坡上,在村的入口处,开车的支师傅猛打方向几乎
学了一遍SSM后发觉没记住多少,所以再快速复习一下,简单整理一下Spring的用法和一些知识点。
tar命令仅打包不压缩:tar -cvf 新包名 原目录名解包: tar -zvf tar包名不解压看压缩包内容:tar tvf file.targzip、unzip:打包并压缩:tar -czvf 新包名.tar.gz 需要打包的目录解包压缩包:tar -zxvf 压缩包名.tar.gz解压zip后缀名文件:unzip 文件名.gz或gzip -d ...
Spring的功能是很强大的,在其“绝不发明自己认为好的轮子,而只发明自己认为不好的轮子”的指导思想下,通过充分实践了“一切实事求是、‘循证架构’的工作方式”的理论,基本上把轻量级的J2EE应用框架(如ORM、MVC等)进行了整合,并构架了一些常用的功能(如DAO),形成了一个功能强大的J2EE轻量级企业应用框架。 然而,或许是大家对Spring掌握得还不透彻的缘故吧,看到很多软件企业中用到的...
思科NEXUS设备忘记密码重置方法思科NEXUS系列交换机忘记密码,您可以通过重启设备的方式来重置密码,有两种方式,第一种会清空配置,第二种会保留之前配置。如果有异议的地方请优先按英文文档中的描述为主。1、清除配置恢复(破坏性恢复)首先重启设备(c) Copyright 2016, Cisco Systems.N5K-C5672UP BIOS v.2.1.7, Thu 06/16/2016Booting kickstart image: bootflash:/n600..
报错:ORA-28001: 口令已经失效https://blog.csdn.net/qq_41419769/article/details/103890928数据库启动关闭find[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r5l4bBbi-1630125174945)(C:/Users/Administrator.DESKTOP-103F3OH/AppData/Roaming/Typora/typora-user-images/image-202107310804
翻译:每个数据库至少需要一个数据库管理员(DBA),一个数据库系统有可能很大而且拥有很多用户。所以数据库管理员有时候不是一个人在工作,而是一个拥有DBA责任的DBA组的工作。一个数据库管理员的职责有以下任务:1.安装和更新数据库服务和应用程序工具。2.为数据库系统分配系统存储和计划以后的存储需求。3.在程序员设计好一个应用程序后创建基本的数据库存储结构(表空间)。...
问题为什么jQuery.ajax() 没有默认支持302重定向?解答jQuery.ajax 是通过xmlHttpRequest来实现的,而这个东西存在跨域问题,如果302跳转到的地址还是当前域,则服务器端几乎没有302重定向的必要;如果302跳转到的地址不是当前所在的域,则必然存在跨域问题。可能就是这个原因吧。但是:出于跨域资源共享的需要,很多浏览器开始支持cors,如果浏览器支持了cors(假设...