介绍

  • 在对外分享文件时,利用 Nginx 搭建一个简单的下载文件管理服务器,文件分享就会变得非常方便。利用 Nginx 的诸多内置指令可实现自动生成下载文件列表页、限制下载带宽等功能。

  • 演示站点(群晖文件下载服务器):https://archive.synology.com/download

安装教程

安装nginx

  1. 打开群晖的SSH功能,使用终端软件进行连接,并切换到root状态下。

  2. 进入群晖的docker文件夹(你想将静态文件数据存储到哪就进哪个文件夹)

    cd /volume1/docker
    Bash
  3. 对群晖docker文件夹设置读写权限为everyone(数据文件存放在哪就设置哪个文件夹)

    chmod -R 777 /volume1/docker
    Bash
  4. 创建并进入nginx文件夹及子文件夹www,列出当前文件夹路径。

    mkdir -p nginx && cd nginx && mkdir www  && cd www && pwd
    Bash
  5. 复制并修改下面的命令,粘贴到终端内执行。

    docker run --name nginx -p 9999:80 -v /volume1/docker/nginx/www:/home/www -d nginx
    
    #说明
    --name nginx 容器的名称为nginx
    -p 9999:80 将主机8080端口映射到容器nginx的80端口,9999端口可以自己修改。
    -v /volume1/docker/nginx/www:/home/www 将主机/volume1/docker/nginx/www目录映射到容器/home/www目录。这里/home/www是后面nginx配置文件中我们要指定的存放静态文件的位置,映射到主机目录后,直接将静态文件放到主机目录即可。
    -d 后台启动
    nginx 创建容器使用的镜像及版本
    Bash
  6. 查看正在运行的容器

    docker ps
    Undefined
  7. 打开浏览器,以群晖的IP+设置的端口进行访问。

    以本机为例:http://192.168.2.100:9999
    出现此页面即为安装成功

拷贝nginx配置文件

  1. 进入nginx容器内部

    docker exec -it nginx bash
    Bash
  2. 我们看到nginx的默认配置文件为nginx.conf,但是我们不建议将个性化配置直接放在此文件中,而是在conf.d目录下创建*.conf文件,将配置信息放在这里。

    root@NAS:/volume1/docker/nginx/www# docker exec -it nginx bash    #进入nginx容器内部
    root@7c5fc783cf61:/# cd /etc/nginx    #进入/etc/nginx目录
    root@7c5fc783cf61:/etc/nginx# ls    #列出当前目录内的文件
    conf.d  fastcgi_params  mime.types  modules  nginx.conf  scgi_params  uwsgi_params
    root@7c5fc783cf61:/etc/nginx# cd conf.d    进入conf.d文件夹
    root@7c5fc783cf61:/etc/nginx/conf.d# ls    ##列出当前目录内的文件
    default.conf
    root@7c5fc783cf61:/etc/nginx/conf.d#
    
    Ruby
  3. 为了配置管理方便,我们将nginx容器/etc/nginx/conf.d目录下的配置文件直接映射到主机目录。
    先输入exit退出容器内部,再执行下面的命令。

    docker cp nginx:/etc/nginx/conf.d /volume1/docker/nginx
    
    #docker cp 容器名:需要拷贝的文件/文件夹路径 存放拷贝出来的位置路径
    Bash
  4. 停止运行并删除创建好的nginx容器

    docker stop nginx && docker rm -f nginx
    Bash
  5. 重新创建nginx容器
    在第一次创建nginx容器的基础上添加映射复制出来的default.conf文件路径。

    docker run --name nginx -p 9999:80 -v /volume1/docker/nginx/www:/home/www -v /volume1/docker/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx
    
    #说明
    --name nginx 容器的名称为nginx
    -p 9999:80 将主机8080端口映射到容器nginx的80端口,9999端口可以自己修改。
    -v /volume1/docker/nginx/www:/home/www 将主机/volume1/docker/nginx/www目录映射到容器/home/www目录。这里/home/www是后面nginx配置文件中我们要指定的存放静态文件的位置,映射到主机目录后,直接将静态文件放到主机目录即可。
    -v /volume1/docker/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf  将主机的/volume1/docker/nginx/conf.d/default.conf目录内的default.conf映射到容器/etc/nginx/conf.d/目录内,方便修改容器内部设置。
    -d 后台启动
    nginx 创建容器使用的镜像及版本
    Bash
  6. 查看正在运行的容器

    docker ps
    Undefined

配置nginx

  1. 进入存放nginx默认配置文件的目录,并列出目录内的文件。
    (就是从nginx容器内拷贝出来的default.conf配置文件的目录,别说你忘了你存放的路径。)

    cd /volume1/docker/nginx/conf.d && ls
    Bash
  2. 编辑nginx默认配置文件

    vi default.conf
    C++
  3. 按字母 i 键进入编辑模式,修改下面的配置文件,按Esc键退出编辑模式,输入:wq退出并保存。
    将下图的/usr/share/nginx/html改成/home/www即可,也可以注释掉,重新写一行
    参考下面的命令

    #这是演示的,自己修改你自己的default.conf配置文件。
    #需要的功能自行添加,不需要的不添加或关闭。
    
    server {
        listen       80;
        listen  [::]:80;
        server_name  localhost;
    
        #access_log  /var/log/nginx/host.access.log  main;
    
        location / {
            #root   /usr/share/nginx/html;    #此行演示的是注释掉。
            root   /home/www;    #将这里的/usr/share/nginx/html改成/home/www
            index  index.html index.htm;
            autoindex on;    #开启目录浏览功能,否则只能以http://192.168.2.100:9999/logo.png这种方式访问单个文件。
            autoindex_exact_size off;    #关闭详细文件大小统计,让文件大小以MB、GB为单位显示,默认为b>。
            autoindex_localtime on;    #开启以服务器本地时区显示文件修改日期。
            charset utf-8,gbk;    #展示中文文件名
        }
    
        #error_page  404              /404.html;
    
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
    
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
    
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
    
    Bash

  4. 重启nginx容器

    docker restart nginx
    Undefined
  5. 查看正在运行的容器

    docker ps
    Undefined

实验nginx文件服务

  1. 在www目录内上传一些文件,随意,测试而已。

  2. 打开浏览器,以群晖的IP+设置的端口进行访问。
    以本机为例:http://192.168.2.100:9999/

  3. 点击文件即可下载,点击图片文件将自动打开图标,浏览器点击返回键即可返回目录。
    点击文件夹即可进入子文件夹

功德+1(狗子).gif

👇👇👇