Nginx制作下载站点与用户认证模块

Nginx制作下载站点

首先我们先要清楚什么是下载站点?

我们先来看一个网站http://nginx.org/download/,该网站主要就是用来提供用户来下载相关资源的网站,就叫做下载网站。

如何制作一个下载站点:

nginx使用的是模块ngx_http_autoindex_module来实现的,该模块处理以斜杠("/")结尾的请求,并生成目录列表。

nginx编译的时候会自动加载该模块,但是该模块默认是关闭的,我们需要使用下来指令来完成对应的配置

(1)autoindex:启用或禁用目录列表输出

语法 autoindex on|off;
默认值 autoindex off;
位置 http、server、location

(2)autoindex_exact_size:对应HTLM格式,指定是否在目录列表展示文件的详细大小

默认为on,显示出文件的确切大小,单位是bytes。
改为off后,显示出文件的大概大小,单位是kB或者MB或者GB

语法 autoindex_exact_size on|off;
默认值 autoindex_exact_size on;
位置 http、server、location

(3)autoindex_format:设置目录列表的格式

语法 autoindex_format html|xml|json|jsonp;
默认值 autoindex_format html;
位置 http、server、location

注意:该指令在1.7.9及以后版本中出现

(4)autoindex_localtime:对应HTML格式,是否在目录列表上显示时间。

默认为off,显示的文件时间为GMT时间。
改为on后,显示的文件时间为文件的服务器时间

语法 autoindex_localtime on | off;
默认值 autoindex_localtime off;
位置 http、server、location

配置方式如下:

location /download{
root /usr/local;
autoindex on;
autoindex_exact_size on;
autoindex_format html;
autoindex_localtime on;
}

XML/JSON格式[一般不用这两种方式]

Nginx的用户认证模块

对应系统资源的访问,我们往往需要限制谁能访问,谁不能访问。这块就是我们通常所说的认证部分,认证需要做的就是根据用户输入的用户名和密码来判定用户是否为合法用户,如果是则放行访问,如果不是则拒绝访问。

Nginx对应用户认证这块是通过ngx_http_auth_basic_module模块来实现的,它允许通过使用"HTTP基本身份验证"协议验证用户名和密码来限制对资源的访问。默认情况下nginx是已经安装了该模块,如果不需要则使用--without-http_auth_basic_module

(1)auth_basic:使用“ HTTP基本认证”协议启用用户名和密码的验证

语法 auth_basic string|off;
默认值 auth_basic off;
位置 http,server,location,limit_except

开启后,服务端会返回401,指定的字符串会返回到客户端,给用户以提示信息,但是不同的浏览器对内容的展示不一致。

(2)auth_basic_user_file:指定用户名和密码所在文件

语法 auth_basic_user_file file;
默认值
位置 http,server,location,limit_except

指定文件路径,该文件中的用户名和密码的设置,密码需要进行加密。可以采用工具自动生成

实现步骤:

1.nginx.conf添加如下内容

location /download{
root /usr/local;
autoindex on;
autoindex_exact_size on;
autoindex_format html;
autoindex_localtime on;
auth_basic 'please input your auth';
auth_basic_user_file htpasswd;
}

2.我们需要使用htpasswd工具生成

yum install -y httpd-tools
htpasswd -c /usr/local/nginx/conf/htpasswd username //创建一个新文件记录用户名和密码
htpasswd -b /usr/local/nginx/conf/htpasswd username password //在指定文件新增一个用户名和密码
htpasswd -D /usr/local/nginx/conf/htpasswd username //从指定文件删除一个用户信息
htpasswd -v /usr/local/nginx/conf/htpasswd username //验证用户名和密码是否正确

上述方式虽然能实现用户名和密码的验证,但是大家也看到了,所有的用户名和密码信息都记录在文件里面,如果用户量过大的话,这种方式就显得有点麻烦了,这时候我们就得通过后台业务代码来进行用户权限的校验了。

posted @   Lz_蚂蚱  阅读(97)  评论(0编辑  收藏  举报
历史上的今天:
2020-10-04 31.yum包管理
2020-10-04 30.rpm包管理
2020-10-04 29.网络配置
2020-10-04 28.df、du磁盘情况查询
2020-10-04 27.mbr、gtp磁盘分区、挂载
2020-10-04 26.crontab任务调度
2020-10-04 23.防火墙及systemctl 服务管理
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起