Cache Nginx, mesmo que seja uma resposta 404

2

Eu uso o URL de reescrita 404:

    error_page 404 = /url_rewriting.php;

Eu armazeno em cache imagens geradas com um script de renderização em uma pasta / render /:

    set $no_cache 0;

    location ~ /render/ {
            include snippets/fastcgi-php.conf;
            #fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            fastcgi_pass 127.0.0.1:9000;

            fastcgi_buffers 8 16k; # increase the buffer size for PHP-FTP
            fastcgi_buffer_size 32k; # increase the buffer size for PHP-FTP
            fastcgi_cache_key $scheme$host$request_uri$request_method;
            fastcgi_cache PROD;
            fastcgi_cache_valid any 20d;
            fastcgi_cache_valid 404      1d;
            fastcgi_cache_use_stale updating error timeout invalid_header http_500 http_503;
            fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
            fastcgi_hide_header "Set-Cookie";
            fastcgi_cache_bypass $no_cache;
            fastcgi_no_cache $no_cache;
            expires 10M;
            access_log off;
            add_header Cache-Control "public";
            add_header X-Cache-Status $upstream_cache_status;
    }

O cache funciona com uma URL assim:

https://mywebsite.com/include/php/render/framed/img.php?VR=1&size=300&image=U3pmwKi

Mas o cache não funciona com uma URL assim:

https://mywebsite.io/include/php/render/framed/file/VR/1/size/300/image/U3dpwK

Esta segunda URL passa por error_page 404 = /url_rewriting.php; porque o diretório 'file' não existe, mas o script exibe a imagem graças ao script url_rewriting.php que faz o truque

O que devo atualizar para minha configuração do Nginx para poder armazenar em cache 404 respostas?

    
por Vincent111 29.04.2018 / 15:31

1 resposta

0

As respostas de erro de cache são possíveis com a palavra-chave always :

add_header Cache-Control "public; max-age=3600" always;

A partir dos documentos :

Adds the specified field to a response header provided that the response code equals 200, 201 (1.3.10), 204, 206, 301, 302, 303, 304, 307 (1.1.16, 1.0.13), or 308 (1.13.0) ... If the always parameter is specified (1.7.5), the header field will be added regardless of the response code.

    
por 24.08.2018 / 12:15