nginx 核心知识100讲笔记(三)

栏目: 服务器 · Nginx · 发布时间: 5年前

缓存

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讲笔记(三)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

微信思维

微信思维

谢晓萍 / 羊城晚报出版社 / 2014-11 / 49

微信团队&萤火科技联合策划 一部记录微信如何渗入商业血脉,推动社会进化的力作一起来看看 《微信思维》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具