使用nginx打造个人下载站点


0,使用nginx自带功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@stark download]# cat /etc/nginx/conf.d/download.conf 
server {
listen 8888;
server_name _;

location / {
root /download; //*下载站根目录
autoindex on; //*开启目录浏览功能
autoindex_localtime on;
autoindex_exact_size off; //*on为以bytes显示文件大小,off为使用单位来显示(K,M,G)
autoindex_format html; //*以html的方式显示页面
charset utf-8,gbk; //*支持显示中文
}
}

创建以下一系列文件
Snipaste_2019-12-20_12-51-03.png
访问该网页看一下效果
Snipaste_2019-12-20_12-51-46.png
网易云的镜像网站,可以看到基本上是一样的了
Snipaste_2019-12-20_12-52-27.png
下载站的功能是实现了,可是看起来好单(low)调(bi)啊!

1,下面让我们美化一下下载站的页面吧!

1
2
3
4
yum install gcc gcc-c++ pcre-devel zlib-devel openssl-devel -y
git clone https://github.com/aperezdc/ngx-fancyindex.git /tmp/fancyindex
wget -P /tmp http://nginx.org/download/nginx-1.17.6.tar.gz
cd /tmp/nginx-1.17.6

2,全新编译安装nginx

1
2
3
4
./configure --prefix=/usr/local/nginx --add-module=../fancyindex && make && make install
**如果你的服务器已经存在编译好的nginx,那么请看下面这个**
./configure --prefix=/usr/local/nginx {你之前nginx使用的模块都要加上} --add-module=../fancyindex && make
cp -a /tmp/nginx-1.17.6/objs/nginx 之前的nginx安装路径,例如: /usr/local/nginx/sbin/nginx

验证是否支持fancyindex模块
Snipaste_2019-12-20_13-26-28.png

3,配置fancyindex主题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
cd /download
git clone https://github.com/Naereen/Nginx-Fancyindex-Theme.git //*下载主题文件
mv Nginx-Fancyindex-Theme/Nginx-Fancyindex-Theme-light/ ./ //*将其中的light主题复制到网页根目录
[root@stark download]# cat /usr/local/nginx/conf/vhost/download.conf
server {
listen 8888;
server_name _;

location / {
root /download;
autoindex on;
autoindex_localtime on;
autoindex_exact_size off;
autoindex_format html;
charset utf-8,gbk;
fancyindex on;
fancyindex_exact_size off;
fancyindex_localtime on;
fancyindex_header "/Nginx-Fancyindex-Theme-light/header.html"; //*指定主题页头
fancyindex_footer "/Nginx-Fancyindex-Theme-light/footer.html"; //*指定主题页脚
fancyindex_ignore "Nginx-Fancyindex-Theme-light"; //*指定忽略的目录或文件
fancyindex_name_length 255;
}
}

最终实现效果!
Snipaste_2019-12-20_13-44-04.png

4,下面我们来尝试下载一下文件

这个文件下载没问题
Snipaste_2019-12-20_13-51-35.png
阿喂,怎么变成这样了?好难过,这不是我要的那种结果!
Snipaste_2019-12-20_13-52-18.png

5,解决下载某些文本文件直接打开的问题!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@stark download]# cat /usr/local/nginx/conf/vhost/download.conf
server {
listen 8888;
server_name _;

location / {
if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$) //*以这些后缀结尾的文件都给我老老实实的下载!
{
add_header Content-Disposition attachment;
}
root /download;
autoindex on;
..................
..................
}
/usr/local/nginx/sbin/nginx -sreload //*重载nginx配置文件

Snipaste_2019-12-20_14-00-36.png