nginx中gzip和cache配置

gzip

1
2
3
4
5
6
7
8
9
10
11
gzip on;         #开启 gzip      
gzip_min_length 1k;    # 最小压缩字节
gzip_buffers 16 64k;   # 16 *64k 内存
gzip_http_version 1.1;  #识别协议版本
gzip_comp_level 6;      # 压缩比率
gzip_types text/plain application/javascript text/css application/xml; # 指定压缩的头
gzip_vary on;    # 给代理服务器使用  

gzip_proxied any; #代理结果压缩


cache

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
proxy_cache_path  /dev/shm/proxy_cache_dir levels=1:2 keys_zone=mycache:200m inactive=1d max_size=1g;
# proxy_cache_path 缓存文件路径
# levels 设置缓存文件目录层次,1:2 表示两级
# key_zone 缓存名字和共享内存大小
# inactive 指定时间没人访问删除  
# max_size 最大缓存空间,缓存空间满后覆盖缓存时间最长的
proxy_temp_path   /data/nginx_cache/proxy_cache/proxy_temp_dir;
# 使用temp存储, 如果不使用 可以在 max_size 后关闭 use_temp_path=off;
proxy_cache_valid  200  302  10m ;  
# 指定状态码,缓存有效时间 针对不同的response code设定不同的缓存时间,如果不设置code,默认为200,301,302,也可以用any指定所有code
proxy_cache mycache;
# 设置开启对后端响应的缓存 关闭为 proxy_cache off ,参数值为名称
proxy_cache_key $scheme$proxy_host$request_uri;
# 给缓存设定key
proxy_cache_bypass $http\_pragma $http_authorization;
# 指定哪些响应在某些值不为空或不为0的情况下不走缓存
proxy_cache_min_uses 1;
# 指定在多少次请求之后才缓存响应内容 默认为1
proxy_cache_use_stale off;
# 指定在后端服务器在返回什么状态码的情况下可以使用过期的缓存,比如proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_cache_lock off;
# 默认不开启,开启的话则每次只能有一个请求更新相同的缓存,其他请求要么等待缓存有数据要么限时等待锁释放;nginx 1.1.12才开始有
proxy_cache_lock_timeout 5s;
# 等待缓存锁超时之后将直接请求后端,结果不会被缓存 ; nginx 1.1.12才开始有
add_header  Nginx-Cache "$upstream_cache_status";
# http head 返回 HIT 为命中 MISS 为未命中 EXPIRED 过期

cache example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
http {
   # we set this to be on the same filesystem as proxy_cache_path
   proxy_temp_path /usr/local/nginx/proxy_temp;
   # good security practice dictates that this directory is owned by the
   # same user as the user directive (under which the workers run)
   proxy_cache_path /usr/local/nginx/proxy_temp keys_zone=CACHE:10m levels=1:2 inactive=6h max_size=1g;

   server {
       location / {
           # using include to bring in a file with commonly-used settings
           include proxy.conf;
           # referencing the shared memory zone defined above
           proxy_cache CACHE;
           proxy_cache_valid any 1d;
           proxy_cache_bypass $http_pragma $http_authorization;
           proxy_cache_min_uses 3;
           proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
           proxy_pass http://upstream;
      }
  }
}

作者

张巍

发布于

2018-11-29

更新于

2018-11-29

许可协议

评论