【问题标题】:Why nginx does not cache my content?为什么 nginx 不缓存我的内容?
【发布时间】:2014-05-17 00:52:01
【问题描述】:

我检查了缓存路径 /usr/local/nginx/proxy_cache。多次访问某个网址后,没有找到缓存文件。

我的配置: ngnix.conf

http {
   include       /etc/nginx/mime.types;

   default_type  application/octet-stream;

   access_log   /var/log/nginx/access.log;

   sendfile        on;
   #tcp_nopush     on;

   #keepalive_timeout  0;
   keepalive_timeout  65;
   tcp_nodelay        on;

   client_body_buffer_size  512k;  


   proxy_temp_file_write_size 128k;  
   proxy_temp_path   /usr/local/nginx/proxy_temp;  
   proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=content:20m inactive=1d max_size=100m;   

   gzip  on;

   include /etc/nginx/conf.d/*.conf;
   include /etc/nginx/sites-enabled/*;
}

默认

server {
listen   80;
server_name  208.115.202.87;


   location  /test {    
     proxy_cache content; 
     proxy_cache_key $host$uri$is_args$args;
         proxy_cache_valid  200 15m;
     proxy_pass  http://aaa.com/;
    }

【问题讨论】:

    标签: caching proxy nginx reverse-proxy


    【解决方案1】:

    nginx 不会缓存设置 cookie 的页面, 检查您的网页是否有 Set-Cookie 标头。

    如有必要,可以使用 proxy_ignore_headers 忽略 cookie,并使用 proxy_hide_header 抑制 cookie。例如:

    proxy_ignore_headers Set-Cookie;
    proxy_hide_header Set-Cookie;
    

    【讨论】:

    • wiki.nginx.org/HttpProxyModule#proxy_cache 以下响应标头将响应标记为不可缓存,除非它们被忽略: Set-Cookie Cache-Control 包含“no-cache”、“no-store”、“private”或具有非数字或 0 值的 "max-age" 过期 X-Accel-Expires: 0
    【解决方案2】:

    您应该打开错误日志记录,然后查看一下。我的 fastcgi 缓存也有类似的问题,问题是文件夹权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      • 2012-10-25
      • 2012-06-22
      相关资源
      最近更新 更多