Nginx fastcgi_cache排除会话cookie

需要帮助find使用Nginx fastcgi_cache而不cachingPHP会话cookie的正确设置。 这是我目前下面的。 然而,如果我进入一个已经被caching的页面,在浏览器中删除我的PHPSESSION cookie并刷新,那么testing这个,我从一个caching的Nginx文件中得到一个PHPSESSION ID。

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; } 

我们曾经在Nginx中使用proxy_cache,如下所示,但是从Nginx / Apache / Php安装程序转移到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; 

这个链接似乎是质疑同样的事情,但如果我使用fastcgi_hide_header“Set-Cookie”; 我们的购物车有问题 我假设,因为它不能看到会议。

让我知道是否需要更多的细节。 谢谢,

克里斯。

我觉得你太过于复杂了。 尝试这个:

 fastcgi_no_cache $cookie_PHPSESSID; fastcgi_cache_bypass $cookie_PHPSESSID; 

顺便说一下proxy_*指令是用于nginx像代理一样的情况,例如在负载平衡scheme中。 我怀疑当nginx可以是fastcgi-backend和一个位置的代理时,可以有一个configuration。