1.nginx缓存
1.1静态文件缓存
1.1.1示例1-------根据文件后缀:
location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ { expires 30d; }
或者
location ~ .*.(js|css)?$ { expires 12h; }
1.1.2示例2----------根据文件类型
location ~* .(js|css|jpg|jpeg|gif|png|swf)$ { if (-f $request_filename) { root /html/web/bbs; expires 1d; break; } }
1.1.3示例3-----------根据目录类型
location ~ ^/(images|javascript|js|css|flash|media|static)/ { root /html/web; expires 30d; }
1.2http块与server块缓存配置
http块:
proxy_cache_path /tmp/cache levels=1:2 keys_zone=nuget-cache:20m max_size=50g inactive=168h;
/path/to/cache #本地路径,用来设置Nginx缓存资源的存放地址 levels #默认所有缓存文件都放在同一个/path/to/cache下,但是会影响缓存的性能,因此通常会在/path/to/cache下面建立子目录用来分别存放不同的文件。假设levels=1:2,Nginx为将要缓存的资源生成的key为f4cd0fbc769e94925ec5540b6a4136d0,那么key的最后一位0,以及倒数第2-3位6d作为两级的子目录,也就是该资源最终会被缓存到/path/to/cache/0/6d目录中 key_zone #在共享内存中设置一块存储区域来存放缓存的key和metadata(类似使用次数),这样nginx可以快速判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个key max_size #最大cache空间,如果不指定,会使用掉所有disk space,当达到配额后,会删除最少使用的cache文件 inactive #未被访问文件在缓存中保留时间,本配置中如果60分钟未被访问则不论状态是否为expired,缓存控制程序会删掉文件。inactive默认是10分钟。需要注意的是,inactive和expired配置项的含义是不同的,expired只是缓存过期,但不会被删除,inactive是删除指定时间内未被访问的缓存文件 use_temp_path #如果为off,则nginx会将缓存文件直接写入指定的cache文件中,而不是使用temp_path存储,official建议为off,避免文件在不同文件系统中不必要的拷贝 proxy_cache #启用proxy cache,并指定key_zone。另外,如果proxy_cache off表示关闭掉缓存。
server块中的location块设置如下:
proxy_cache nuget-cache; proxy_cache_valid 200 304 2m;#对200和304的文件2分钟过期 proxy_ignore_headers Set-Cookie Cache-Control; #这句代码很关键,尤其要忽略set-cookie proxy_hide_header Cache-Control; proxy_hide_header Set-Cookie; proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
proxy_cache_use_stale增强站点容错能力 proxy_cache_purge缓存清理指令
2.nginx防盗链
#Preventing hot linking of images and other file types location ~* ^.+.(gif|jpg|png|swf|flv|rar|zip)$ { valid_referers none blocked server_names *.chinarenservice.com https://www.baidu.com; if ($invalid_referer) { rewrite ^/http://www.xxx.com/images/default/logo.gif; # return 403; } }
3.nginx禁止访问某些资源
3.1禁止访问*.txt 文件
location ~* .(txt|doc)$ { if (-f $request_filename) { root /html/test; break; } }
3.2禁止访问某个目录
location ~ ^/(tomcat)/ { deny all; }
3.3禁止下载以点开头的文件:如 .freeke;.dat;.exe
location ~ /..+ { deny all; }
原文始发于:nginx缓存,防盗链,禁止访问资源