1 votes

nginx : fastcgi_cache_path vide

Je voulais essayer fastcgi_cache sur mon installation nginx 1.5.8, comme indiqué ci-dessous aquí .

Dans la conf de nginx, section http, j'ai ajouté :

fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=microcache:10m
max_size=1000m inactive=60m;

Dans la section serveur :

    set $cache_uri $request_uri;

    # POST requests and urls with a query string should always go to PHP
    if ($request_method = POST) {
        set $cache_uri 'null cache';
    }
    if ($query_string != "") {
        set $cache_uri 'null cache';
    }

    # Don't cache uris containing the following segments
    if ($request_uri ~*
"(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)")
{
        set $cache_uri 'null cache';
    }

    # Don't use the cache for logged in users or recent commenters
    if ($http_cookie ~*
"comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") {
        set $cache_uri 'null cache';
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi.conf;
        fastcgi_pass unix:/var/run/php5-fpm.sock;

        ##
        # Fastcgi cache
        ##
        set $skip_cache 1;
                if ($cache_uri != "null cache") {
                    add_header X-Cache-Debug "$cache_uri $cookie_nocache
$arg_nocache$arg_comment $http_pragma $http_authorization";
            set $skip_cache 0;
        }
        fastcgi_cache_bypass $skip_cache;
                   fastcgi_cache_key
$scheme$host$request_uri$request_method;
            fastcgi_cache_valid any 8m;
                   fastcgi_cache_bypass $http_pragma;
                fastcgi_cache_use_stale updating error timeout
invalid_header http_500;

    }

I chown ed /var/cache/nginx à l'utilisateur (et groupe) www-data et chmod l'a consacré à 775 . J'ai redémarré nginx mais le dossier est toujours vide. Est-ce normal ? Comment puis-je tester si fastcgi_cache fonctionne ?

0 votes

Qu'y a-t-il dans votre fastcgi.conf ?

0 votes

0 votes

Essayez de coder le répertoire en 777 et voyez si cela fonctionne. Si oui, quel est l'utilisateur/groupe sur les fichiers ?

1voto

Capilé Points 201

Vous devez également définir fastcgi_cache microcache; à un moment donné de votre configuration. La valeur par défaut null a désactivé la mise en cache : http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache

Pour le vérifier, voyez si le X-Cache-Debug est présent dans la réponse. Si ce n'est pas le cas, vous êtes trop restrictif quant à ce qui peut être mis en cache. Nginx honore également l'en-tête Cache-Control que vous définissez dans la réponse HTTP - vous pouvez l'utiliser/contrôler dans vos applications au lieu d'ajouter trop de conditions pour la mise en cache.

0 votes

J'ai déjà essayé mais je reçois une erreur disant qu'il y a une double valeur de fastcgi_cache...

0 votes

Recevez-vous l'en-tête X-Cache-Debug ?

0voto

cnst Points 12508

Oui, c'est normal.

Nulle part dans votre configuration vous n'avez l'option fastcgi_cache directive.

Si elle n'est pas spécifiée, la valeur implicite est off . Si vous voulez que la mise en cache se poursuive, il vaut mieux mentionner fastcgi_cache microcache; quelque part, où le microcache est le nom de votre keys_zone de fastcgi_cache_path .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X