Nginx fastcgi_cache exclui cookie de sessão

1

Precisa de ajuda para encontrar a configuração correta para usar o Nginx fastcgi_cache sem armazenar em cache o cookie de sessão do PHP. Aqui está o que eu tenho atualmente abaixo. Testando isso, no entanto, se eu for para uma página que tenha sido armazenada em cache, exclua meu cookie PHPSESSION no navegador e atualize, recebo um ID PHPSESSION de um dos arquivos Nginx armazenados em cache.

if ($http_cookie = "PHPSESSION")
{
   set $fastcgi_skipcache 1;
}
location ~* \.php {
    include fastcgi_params;
    fastcgi_pass backend;
    fastcgi_index index.php;
    fastcgi_param SERVER_NAME $host;
    fastcgi_param SCRIPT_URL $fastcgi_script_name;
    fastcgi_param SCRIPT_URI $scheme://$http_host$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME "/index.php";
    fastcgi_param PHP_SELF $uri;
    fastcgi_param HTTPS $https if_not_empty;
    fastcgi_param HTTP_FRONT_END_HTTPS HTTPS;
    fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_param REQUEST_URI $uri?$args;
    fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
    fastcgi_intercept_errors on;
    fastcgi_ignore_client_abort off;
    fastcgi_connect_timeout 90;
    fastcgi_send_timeout 180;
    fastcgi_read_timeout 180;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 4 256k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;

    #Caching
    fastcgi_cache ee;
    fastcgi_cache_key "$scheme$host$request_uri";
    fastcgi_cache_valid 200 302 168h;
    fastcgi_cache_valid 404 1m;
    fastcgi_cache_bypass $fastcgi_skipcache;
    fastcgi_no_cache $fastcgi_skipcache;

}

Nós costumávamos ter esse trabalho em Nginx com proxy_cache como abaixo, mas estamos mudando da configuração Nginx / Apache / Php para a configuração Nginx / PHP-FPM.

    proxy_hide_header Set-Cookie;
    proxy_ignore_headers Expires Cache-Control Set-Cookie;
    proxy_set_header Cookie "";

    proxy_cache ee;
    proxy_cache_key         "$scheme$host$request_uri";
    proxy_cache_valid 200 302 60m;
    proxy_cache_valid 404 1m;

Este link parece ser questionando a mesma coisa, mas se eu usar fastcgi_hide_header "Set-Cookie"; Estamos com problemas no nosso carrinho. Estou assumindo porque não pode ver a sessão.

Deixe-me saber se mais detalhes são necessários. Obrigado,

Chris.

    
por cdlaforc 19.10.2016 / 02:47

1 resposta

1

Eu acho que você está complicando demais as coisas. Tente isto:

fastcgi_no_cache $cookie_PHPSESSID;
fastcgi_cache_bypass $cookie_PHPSESSID;

A propósito, as diretivas proxy_* são para um caso em que o nginx está agindo como um proxy , por exemplo, em um esquema de nulo de carga. Eu duvido que possa haver uma configuração quando o nginx pode ser tanto fastcgi-backend quanto um proxy para um local.

    
por 19.10.2016 / 05:24

Tags