利用Nginx的proxy_store搭建镜像服务器

Nginx的proxy_store作用是直接把静态文件在本地硬盘创建并读取,类似于七牛或者又拍这样的镜像CDN功能,首次访问会自动获取源站的静态图片等文件,之后的访问就是直接从CDN服务器读取,加快了速度。

需要配置一下参数:

    #启用缓存到本地的功能
    proxy_store on;
    #表示用户读写权限,如果在error中报路径不允许访问的话就用"chomod -R a+rw"将下面配置的路径改为相应的权限.
    proxy_store_access user:rw group:rw all:rw;
    #此处为文件的缓存路径,这个路径是和url中的文件路径一致的
    proxy_temp_path 缓存目录;
    #在上面的配置之后,虽然文件被缓存到了本地磁盘上,但每次请求仍会向远端拉取文件,为了避免去远端拉取文件,还必须增加:
    if ( !-e $request_filename) {
    proxy_pass  http://192.168.10.10;
    }
    注:
    "!-e $request_filename"正则表达式,匹配缓存目录中的文件与源文件是否存在。
    "http://192.168.10.10" 源服务器的地址,默认端口80,如监听其他端口,此处要指出,例如4000端口,http://192.168.10.10:4000

整体配置如下(修改nginx的配置文件nginx.conf):

    location / {                                  //这里的location是要换成自己经过精确匹配的location,比如要缓存图片要写成 "location ~*\.(gif|jpg|jepg|png|bmp)${"
        expires 3d;                              //所有链接,浏览器缓存过期时间为3天
        proxy_set_header Accept-Encoding '';
        root /home/mpeg/nginx;                   //此目录为服务器的根目录,下面的if语句就是判断此目录下是否有响应的文件
        proxy_store on;                          //表示开启缓存
        proxy_store_access user:rw group:rw all:rw;//表示用户读写权限
        proxy_temp_path /home/mpeg/nginx;        //此处为文件的缓存路径,这个路径是和url中的文件路径一致的
        if ( !-e $request_filename)  {
                proxy_pass http://192.168.0.1;   //此处为要被代理的服务器的地址
        }
    }

猜你喜欢

转载自blog.csdn.net/feifei3851/article/details/82384778