使用nginx打造个人下载站点

1, 使用nginx自带功能

[[email protected] 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)啊!

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

yum install gcc gcc-c++ pcre-devel zlib-devel openssl-devel -y              //*安装nginx所需依赖
git clone https://github.com/aperezdc/ngx-fancyindex.git /tmp/fancyindex    //*下载fancyindex美化模块
wget -P /tmp http://nginx.org/download/nginx-1.17.6.tar.gz                  //*下载1.17.6版本nginx
cd /tmp/nginx-1.17.6                                                        //*进入到解压后的nginx目录并编译安装

全新编译安装nginx

./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主题

cd /download
git clone https://github.com/Naereen/Nginx-Fancyindex-Theme.git    //*下载主题文件
mv Nginx-Fancyindex-Theme/Nginx-Fancyindex-Theme-light/ ./         //*将其中的light主题复制到网页根目录
[[email protected] 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, 解决下载某些文本文件直接打开的问题!

[[email protected] 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