nginx伪静态缓存不能命中处理

服务器架构为前端一个nginx反向代理 后面两台nginx 
反向代理配置为
            proxy_redirect off;
            proxy_temp_path /www/proxy/temp;
            proxy_cache_path /www/proxy/cache levels=1:2 keys_zone=web_cache:100m inactive=1d                 max_size=30g;
            proxy_connect_timeout 60;
            proxy_send_timeout 60;
            proxy_read_timeout 60;
            proxy_buffer_size 32k;
            proxy_buffers 4 64k;
            proxy_busy_buffers_size 128k;
            proxy_temp_file_write_size 256k;
            proxy_max_temp_file_size 128m;
             

        location /  
        {
            proxy_next_upstream   http_500 http_502 http_503 http_504 error timeout invalid_header;
            proxy_cache web_cache;
            proxy_cache_valid   200 304   1d;
            proxy_cache_key $host$uri$is_args$args;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            add_header X-Cache HIT;
            proxy_pass http://web;
            expires 1d;  
        }
        location ~ .*\.(php|php5)?$
        {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://web;
            expires 1d; 
        }
配置完成后访问页面除html页面外其他页面都可以命中
查看html http头
Cache-Control max-age=86400
Connection keep-alive
Content-Encoding gzip
Content-Type text/html; charset=UTF-8
Date Wed, 26 Dec 2012 02:59:23 GMT
Expires Thu, 27 Dec 2012 02:59:23 GMT
Pragma no-cache
Server nginx
Transfer-Encoding chunked
Vary Accept-Encoding
X-Cache MISS
原来是pragma的问题 查一下nginx手册
有这两个选项
proxy_ignore_headers:禁止处理来自代理服务器的应答,可以指定的字段为”X-Accel-Redirect”, “X-Accel-Expires”, “Expires”或”Cache-Control”。
proxy_hide_header:nginx不对从被代理服务器传来的”Date”, “Server”, “X-Pad”和”X-Accel-…“应答进行转发,这个参数允许隐藏一些其他的头部字段,但是如果上述提到的头部字段必须被转发,可以使用proxy_pass_header指令
先使用proxy_hide_head隐藏后端pragma头
然后使用proxy_ignore_headers 处理来自代理服务器的cache-control和expires头
配置:
proxy_hide_header Pragma;
proxy_ignore_headers Expires; 
proxy_ignore_headers Cache-Control; 
再次查看html的http头

Name Value
Cache-Control max-age=86400
Content-Encoding gzip
Content-Type text/html; charset=UTF-8
Date Wed, 26 Dec 2012 02:57:48 GMT
Expires Thu, 27 Dec 2012 02:57:48 GMT
Server nginx
Vary Accept-Encoding
X-Cache HIT
已经可以命中缓存

你可能感兴趣的:(nginx,缓存,伪静态)