这篇文章主要介绍了Nginx服务器作反向代理时的缓存配置要点解析,需要的朋友可以参考下 这里给出示例,并详解。
反向代理的缓存主要涉及以下几个命令:
proxy_cache_path proxy_cache_key proxy_cache proxy_cache_valid。
这个是设置缓存的目录,语法如下:
代码如下:
proxy_cache_path path [ levels = levels ] keys_zone = name : size [ inactive = time ] [ max_size = size ] [ loader_files = number ] [ loader_sleep = time ] [ loader_threshold = time ]
可放置的上下文: http 参数解释: [ levels = levels ]: 设置缓存目录层数,如levels=1:2,表示创建两层目录缓存,最多创建三层。第一层目录名取proxy_cache_key md5的最后一个字符,第二层目录名取倒数2-3字符,如: proxy_cache_key md5为b7f54b2df7773722d382f4809d65029c,则: levels=1:2为/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c levels=1:2:3为/data/nginx/cache/c/29/650/b7f54b2df7773722d382f4809d65029c 2.keys_zone = name : size: 定义缓存区域名称及大小,缓存名称用于proxy_cache指令设置缓存放置在哪,如proxy_cache one,则把缓存放在zone名称为one的缓存区,即proxy_cache_path指定的具体位置。 3.proxy_cache_key 这个指令是设置以什么参数md5得到缓存的文件名,默认为$scheme$proxy_host$request_uri,即以协议、主机名、请求uri(包含参数)作md5得出缓存的文件名。 proxy_cache_key与下面的清缓存功能(purge cache)有很大关系。 可放置在上下文,http server location 4.proxy_cache 反向代理缓存设置指令,语法proxy_cache zone | off,默认为off。上下文:http server location。 可以放到指定location,这样匹配此location的url才被缓存。 5.proxy_cache_valid 设置指定状态码的缓存时间,语法proxy_cache_valid [ code …] time。 另外,清缓存需要安装插件ngx_cache_purge,安装方法如下:
缓存过期时间
1.inactive=1d
inactive=1d 是指多久未访问以后清除缓存 如果设置了 proxy_buffering off 则不会加载到Temp目录,而是同步的从上游进行加载。 可以通过设置 proxy_max_temp_file_size 参数来设置最大可以缓存的文件大小。
206 和 Byte Range 的问题 但是Nginx做反代的时候,如果没有好好的设置,这个功能可能会引来Dos攻击。 因为默认做反代的时候,Nginx向后端服务器请求的时候是不会把 Range 参数加上的,而是会去请求整个文件,比方说有一个1G的文件,每次请求1M,Nginx会在每次请求的时候去后端请求一个完整的1G文件,然后取出其中的1M发给客户端,这个时候中间的流量会暴增,导致整个服务器宕机。今天因为这个问题导致我检查了很久。 解决方案也很简单,把 Range 加到Header里就行了。
(责任编辑:IT) |