利用Nginx搭建一个漂亮的文件列表站

前言

一直有很多人在问我怎么搭建一个高速、可靠的文件列表站点,本博客之前也有过一篇博文介绍了 ZDir 这个程序。但由于 ZDir 是由 PHP 编写的,难免会受限于主机性能,导致访问较慢。今天我来给大家安利一个 Nginx 插件 ngx-fancyindex ,你不需要花里胡哨的 PHP 来做支持,就可以达到比较理想的访问速度。这里给展示一下笔者已经搭建好的站点 https://down.fdos.me。好了,废话不多说,咱们开搞,当然在开搞之前,本博文已经默认你已经具有 Nginx 编译环境。

开始搭建

第一步:源码获取
俗话说的好,巧妇难为无米之炊。没有源码,咱也是啥都干不成呀。

git clone https://github.com/aperezdc/ngx-fancyindex.git
wget http://nginx.org/download/nginx-1.15.6.tar.gz && tar xzvf ./nginx-1.15.6.tar.gz
git clone https://github.com/aperezdc/ngx-fancyindex.git
wget http://nginx.org/download/nginx-1.15.6.tar.gz && tar xzvf ./nginx-1.15.6.tar.gz

第二步:开始编译
开始编译之前,我们需要了解我们已有 Nginx 的配置信息,如果你没有安装过 Nginx 则可以忽略该项。

nginx -V
nginx version: nginx/1.15.6
built by gcc 8.1.0 (Ubuntu 8.1.0-5ubuntu1~16.04)
built with OpenSSL 1.1.2-dev  xx XXX xxxx
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O3 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'

现在开始编译,若你曾经未安装过Nginx,则直接从本步骤开始。

cd ./nginx-1.15.6
./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O3 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie' --add-module=../ngx-fancyindex
make
make install

到此为止,编译过程以及全部完成,现在开始配置。

第三步:开始配置

(由于插件自带的主题可以说是非常丑了,所以笔者在这里给大家推荐自己改造的bootstrap风格主题)

mkdir -p /var/www/down
cd /var/www/down
git clone https://git.fdos.me/stack/_index.git

之后重启Nginx服务,就可以通过你的域名访问了

server {
        root /var/www/down;
        server_name 你的域名;
        fancyindex on;
        fancyindex_localtime on;
        fancyindex_exact_size off;
        fancyindex_header "/_index/header.html";
        fancyindex_footer "/_index/footer.html";
        fancyindex_ignore "HideMeFromListing";
        fancyindex_name_length 255;
        fancyindex_ignore _index;
        location / {
                try_files $uri $uri/ =404;
        }
}

之后重启Nginx服务,就可以通过你的域名访问了

systemctl reload nginx

总结
总体来说,搭建是非常简单的。但由于涉及到Nginx的编译,已及部分配置过程,一些小白可能觉得比较吃力,但只要肯百度,便可以解决。

Last modification:November 27th, 2018 at 02:35 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment