缓存
expires
expires
- max 永久有效
- off 默认, 不会添加或者修改expires 和 Cache-Control 字段
- epoch 不使用缓存
- time 具体时间
proxy_cache_path
proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
- path 定义缓存文件存放位置
- levels 定义缓存路径的目录层级, 最多3级, 每层目录长度为1或者2字节
-
user_temp_path
- on 使用 proxy_temp_path 定义的临时目录
- off 直接使用path路径存放临时文件
-
keys_zone
- name 是共享内存名字, 由 proxy_cache 指令使用
- size 是共享内存大小, 1MB大约可以存放8000个key
-
inactive
- 默认 10 分钟
- 再 inactive 时间内没有被访问的缓存, 会被淘汰掉
-
max_size
- 折纸最大的缓存文件大小, 超出后由 cache manager 进程按 LRU 链表淘汰
-
manager_files
- cache manager 进程在1次淘汰过程中,淘汰的最大文件数
- 默认 100
-
manager_sleep
- 执行一次淘汰循环后 cache manager 进程的休眠时间
- 默认 200 ms
-
manager_threshold
- 执行一次淘汰循环的最大耗时
- 默认 50 ms
-
loader_files
- cache loader 进程载入磁盘中缓存文件至共享内存, 每批最多处理的文件数
- 默认100
-
loader_sleep
- 执行一次缓存文件至共享内存后, 进程休眠的时间
- 载入默认200毫秒
-
loader_threshold
- 每次载入缓存文件至共享内存的最大耗时
- 默认 50 ms
proxy_cache_key string
# 定义名字为 tow 的共享内存
proxy_cache_path /data/nginx/tmpcache levels=2:2 keys_zone=two:10m loader_threshold=300
loader_files=200 max_size=200m inactive=1m;
server {
server_name cache.liuhonghe.me;
root html/;
error_log logs/cacherr.log debug;
location ~ /purge(/.*) {
proxy_cache_purge two $scheme$1;
}
location /{
#expires @20h30m;
#if_modified_since off;
proxy_cache two; # 使用 two 缓存
proxy_cache_valid 200 1m; # 200 请求使用 1m 有效期
add_header X-Cache-Status $upstream_cache_status; # 验证缓存有没有命中
#proxy_cache_use_stale error timeout updating;
#proxy_cache_key $scheme$uri;
#proxy_cache_revalidate on;
#proxy_cache_background_update on;
#proxy_hide_header Set-Cookie;
#proxy_ignore_headers Set-Cookie;
#proxy_force_ranges on;
proxy_cache_key $scheme$uri;
proxy_pass http://localhost:8012;
}
listen 443 ssl; # managed by Certbot
ssl_certificate examples/cert/a.crt;
ssl_certificate_key examples/cert/a.key;
#include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
#ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
ssl_verify_client optional;
ssl_verify_depth 2;
#ssl_trusted_certificate examples/cert/ca.crt;
ssl_client_certificate examples/cert/ca.crt;
#ssl_client_certificate LetsEncryptAuthorityX3.crt;
location /test {
default_type text/plain;
return 200 '
ssl_client_escaped_cert: $ssl_client_escaped_cert
ssl_client_cert: $ssl_client_cert
ssl_client_raw_cert: $ssl_client_raw_cert
ssl_cipher: $ssl_cipher
ssl_ciphers: $ssl_ciphers
ssl_client_fingerprint: $ssl_client_fingerprint
ssl_client_i_dn: $ssl_client_i_dn
ssl_client_i_dn_legacy: $ssl_client_i_dn_legacy
ssl_client_s_dn: $ssl_client_s_dn
ssl_client_s_dn_legacy: $ssl_client_s_dn_legacy
ssl_client_serial: $ssl_client_serial
ssl_client_v_end: $ssl_client_v_end
ssl_client_v_remain: $ssl_client_v_remain
ssl_client_v_start: $ssl_client_v_start
ssl_client_verify: $ssl_client_verify
ssl_curves: $ssl_curves
ssl_protocol: $ssl_protocol
ssl_server_name: $ssl_server_name
ssl_session_id: $ssl_session_id
ssl_session_reused: $ssl_session_reused
';
}
listen 80; # managed by Certbot
}
server {
listen 127.0.0.1:8011;
default_type text/plain;
limit_rate 1;
return 200 '8011 server response.\n';
}
server {
listen 8013;
default_type text/plain;
return 500 '8013 Server Internal Error.\n';
}
server {
listen 8012;
default_type text/plain;
#client_body_in_single_buffer on;
#add_header Cache-Control 'max-age=3,stale-while-revalidate=3'; # 一样不缓存
#add_header Vary *; # 不缓存
#add_header X-Accel-Expires 3; # 3 秒后过期
root html;
location / {
#add_header aaa 'aaa value';
#add_header X-Accel-Limit-Rate 10;
}
location /test {
return 200 '8012 server response.
uri: $uri
method: $request_method
request: $request
http_name: $http_name
curtime: $time_local
\n';
}
}
以上所述就是小编给大家介绍的《nginx 核心知识100讲笔记(三)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Android 学习笔记核心篇
- nginx 核心知识100讲笔记(一)
- nginx 核心知识100讲笔记(二)
- elasticsearch学习笔记(三)——Elasticsearch的核心概念
- 《DeepLearning.ai 深度学习核心笔记》发布,黄海广博士整理
- 【愣锤笔记】嗯,真香!精简ES函数式编程核心概念
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。