nginx的fast_cgi缓存配置

2017/3/28 posted in  Apache/Nginx
fastcgi_cache_path /var/cache levels=1:2 keys_zone=MYCACHE:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

server {
    server_name test;
    root /webroot/test; ## <-- Your only path reference.
    listen 80;



    #Cache everything by default
    set $no_cache 0;

    #Don't cache POST requests
    if ($request_method = POST)
    {
        set $no_cache 1;
    }

    #Don't cache if the URL contains a query string
    if ($query_string != "")
    {
        set $no_cache 1;
    }

    #Don't cache the following URLs
    if ($request_uri ~* "/(administrator/|login.php)")
    {
        set $no_cache 1;
    }

    #Don't cache if there is a cookie called PHPSESSID
    if ($http_cookie = "PHPSESSID")
    {
        set $no_cache 1;
    }



    location ~ '\.php$' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        include fastcgi_params;
        # Block httpoxy attacks. See https://httpoxy.org/.
        fastcgi_param HTTP_PROXY "";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_intercept_errors on;
               fastcgi_pass backend;

        fastcgi_cache MYCACHE;
        fastcgi_cache_valid 200 60m;
        fastcgi_cache_bypass $no_cache;
        fastcgi_no_cache $no_cache;
        add_header X-Cache $upstream_cache_status;
    }
}