-
Notifications
You must be signed in to change notification settings - Fork 0
63 Nginx代理层缓存
Jinxin Chen edited this page Dec 11, 2019
·
1 revision
利用 Nginx 代理层缓存,可以减少client向后端服务器的请求,从而降低后端服务器压力,提升性能
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 4k;
proxy_busy_buffers_size 8k;
proxy_cache_path /data/nginx/cache/proxy_cache levels=1:2 keys_zone=cache:512m inactive=20m max_size=1g use_temp_path=off;
参数说明:
- proxy_buffering:是否启用缓冲。当启用时,Nginx会尽快的从后端服务器读取数据,并存储到 proxy_buffers 设定的缓冲区。如果数据超过缓冲区大小,则会先被保存到临时文件中。禁用时,数据会同步的发送给client。
- proxy_buffer_size:缓冲区大小,默认为 内存页大小,可以通过 getconf PAGESIZE 获取
- proxy_buffers:缓冲区数量和大小,大小默认为 内存页大小。
- proxy_busy_buffers_size:发送给client的缓冲区大小,默认为缓冲区大小的两倍。
proxy_cache_path 参数说明:
- levels:目录层级,1:2表示2层目录结构存储,比如:/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
- keys_zone:缓存key的共享内存区,1m可以存储8千个key
- inactive:缓存有效时间,如果经过该时间还没有被访问到,则删除该缓存
- max_size:缓存数据最大大小
- use_temp_path:是否将数据先写入临时文件(proxy_temp_path),再写入缓存目录
location ~ .*\.(js|css|ico|png|jpg|eot|svg|ttf|woff|woff2)$ {
proxy_cache cache;
proxy_cache_key $scheme$proxy_host$request_uri;
proxy_cache_valid 1M;
proxy_ignore_headers Expires Cache-Control;
add_header cache-status $upstream_cache_status;
}
参数说明:
- proxy_cache:指定使用哪个共享内存区缓存数据
- proxy_cache_key:缓存文件key,默认为完整的URL
- proxy_cache_valid:为不同的响应状态码设定缓存,如果只设定时间,则 200, 301, 302 都将同时被缓存
- proxy_ignore_headers :禁止代理服务器处理请求头,避免被Expires Cache-Control等参数影响缓存有效性。
- add_header cache-status $upstream_cache_status : 在响应头添加缓存命中状态,方便调试。
实际使用时,可以将 /cache 路径替换为 css/js 等静态文件,从而直接从 proxy 返回响应而无需再将请求发送给后端服务器。
time format:
- ms milliseconds
- s seconds
- m minutes
- h hours
- d days
- w weeks
- M months, 30 days
- y years, 365 days