nginx添加镜像缓存 proxy_store(未完待续)

简介:nginx proxy_store缓存的结果,就是按照服务器的目录设置,直接缓存文件到同样的目录,像镜像一样。

遇到的问题:当服务器需要缓存的文件过大,恰巧此时没有缓存,但是有很多用户同时访问此文件的话,会出现生成很多,临时缓存文件(如000000132)的情况,针对同一个文件的临时缓存各个用户之间是不会共享的,因此会生成很多的临时文件,总的临时文件加载一起有10nG,也不是没有可能,影响nginx正常缓存。如果遇到此种情况,那么就执行下面的命令手动清除吧。

[root@HOST]#rm -rf  [缓存文件的路径]/*

如果缓存文件过多也可以执行上面的命令。如果要定时清理,那么就把这条命令写入脚本(如clear-cache.sh)然后

[root@HOST]#crontab -e 

***/3**/root/clear-cache.sh

一、获取安装包

获取安装包:         wget http://nginx.org/download/nginx-1.7.9.tar.gz

二、安装nginx

[root@HOST]# tar -xvzf nginx-1.7.9.tar.gz
[root@HOST]# cd nginx-1.7.9
[root@HOST]# ./configure --prefix=/usr/local/nginx
[root@HOST]# make
[root@HOST]# make install

三、配置nginx(主要添加加粗字体部分)

[root@HOST]cd /usr/local/nginx 
[root@HOST]vi ./conf/nginx.conf

用加粗字体替换掉原来的部分

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;

    server {
        listen       8065;
        server_name  localhost;

        location / {
            expires 3d;
            proxy_set_header Accept-Encoding '';
            root /home/mpeg/nginx;
            proxy_store on;
            proxy_store_access user:rw group:rw all:rw;
            proxy_temp_path /home/mpeg/nginx;
            if ( !-e $request_filename)  {
                 proxy_pass http://192.168.0.1;
            }
        }
    }
}

四、说明

/*********************************************
此段为注释:
----------------------------------------------
        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;    //表示用户读写权限,如果在error中报路径不允许访问的话就用"chomod -R a+rw"将下面配置的路径改为相应的权限.
            proxy_temp_path /home/mpeg/nginx;              //此处为文件的缓存路径,这个路径是和url中的文件路径一致的,url中?后面的部分不作为路径或文件名参考
            if ( !-e $request_filename)  {
                 proxy_pass http://192.168.0.1;            //此处为要被代理的服务器的地址
            }
        }
**********************************************

  

  

原文地址:https://www.cnblogs.com/bugutian/p/4506763.html