Nginx-20180108Nginx的搭建文件服务器问题一则

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx-20180108Nginx的搭建文件服务器问题一则相关的知识,希望对你有一定的参考价值。

    导读:公司内部一个提供apk包下载的磁盘空间不足,需要将新生成的apk包放到最新挂载的磁盘上面。内部使用的是nginx做为文件服务器对内部提供apk下载服务,现在开发将新生成的包放到新的目录上面,所以nginx的根目录的路径也需要更改了,但是我们希望旧的url还可以对外提供服务。为此现在我的解决思路就是在nginx新建一个新的location为新的root根目录。

    location配置信息:

    location /apk_download/ {
        root /data/apk_download;
        autoindex on;
        gzip on;
        gzip_types text/plain application/x-javascript text/css application/xml application/javascript;
        gzip_min_length  500;
        gzip_buffers     4 8k;
    }

因为nginx的配置已经存在一个对外提供下载的location,所以我是拷贝旧的,然后更改 location 和 root。

    测试:

  1. 包的绝对路径:

/data/apk_download/tasks/packagename_v10.15.2_base.apk

  2. 下载命令或者访问信息:

curl http://ab.moumentei.com/apk_download/tasks/packagename_v10.15.2_base.apk  -L -vvv

    按照上面的命令去执行,在执行的时候返回结果却是404,文件找不到。我一开始一直以为是因为我自己访问的url写错,所以核实了很长的时间,然后又怀疑自己是不是nginx对于下划线_不能识别,所以我将location更改如下:

location /download/ {
        root /data/apk_download;
        autoindex on;
        gzip on;
        gzip_types text/plain application/x-javascript text/css application/xml application/javascript;
        gzip_min_length  500;
        gzip_buffers     4 8k;
    }

    然后继续执行上面的那个命令,结果还是依旧返回404。为此我再一次仔细核实了以前的文件下载服务器的配置信息,然后更改location配置信息如下:

location /apk_download/ {
        root /data/;
        autoindex on;
        gzip on;
        gzip_types text/plain application/x-javascript text/css application/xml application/javascript;
        gzip_min_length  500;
        gzip_buffers     4 8k;
    }

    然后执行以下命令:

curl http://ab.moumentei.com/apk_download/tasks/packagename_v10.15.2_base.apk  -L -vvv

    执行之后,文件能够完全下载下来了。但是这个我有一个疑问,在官网上面没有找到相关信息,希望有比较清楚的大神能够告知:

    文件的绝对路径是/data/apk_download/tasks/packagename_v10.15.2_base.apk,配置的location的root根目录是/data/apk_download,url正常访问应该是http://ab.moumentei.com/apk_download/tasks/packagename_v10.15.2_base.pak应该是没有问题,也不存在找不到文件的说法;在更改location的root根目录为/data,那么正常来说访问的url应该是http://ab.moumentei.com/apk_download/apk_download/tasks/packagename_v10.15.2_base.pak,比之前的url应该是多了一个apk_downlod,但是访问的结果还是404,返回文件找不到。使用旧的http://ab.moumentei.com/apk_download/tasks/packagename_v10.15.2_base.pak却是成功了,这个就是我不能理解的地方。

关于这个问题咨询了一下我的同事,他告诉我:

    就是在 location /apk_download/ { ........ } 这里apk_download 代表了2个意思:一个是域名后面的接的url判断,若是域名后面接有/apk_download/则会跳到这个url下面;另外则是在根目录root下面data目录指定的文件目录。

    所以才会在第一次配置的时候访问一直报错是404,按照这个说法的话在我第一次配置的是root /data/apk_download;那么我的访问拼接的路径应该是/apk_download/apk_download/tasks.... 这个目录,暂时还没有方法验证这个判断是否正确。在这里先记录下来。

以上是关于Nginx-20180108Nginx的搭建文件服务器问题一则的主要内容,如果未能解决你的问题,请参考以下文章

nginx+ffmpeg搭建rtmp转播rtsp流的flash服务器

云服务器搭建 Nginx 静态网站

windows下搭建nginx-rtmp服务器

记录Nginx搭建网关服务

菜鸟学习---NFS共享文件服器务搭建

LNMP环境搭建(linux+Nginx + Mysql + PHP)