4

我有一个正在开发的 Magento 网站http://www.burdastyle.co.uk/,更改货币时出现问题。货币选择器应该添加一个带有“货币”键和所选货币价值的cookie,例如“美元”、“澳元”等。

该站点由 nginx 运行,并且还使用 nginx 缓存。我知道这是缓存导致它不能作为缓存块的 nginx conf 的一部分工作:

fastcgi_hide_header "Set-Cookie";

如果我删除该行,货币选择器将按预期工作,但是如果我在我的购物车中添加一个项目,并且其他人查看他们的购物车,它会显示我刚刚添加的项目,因为它没有该行,所有 cookie 值被缓存并提供给所有最终用户。

完整的 nginx 缓存块是:

location @fcgi_cache {
   fastcgi_pass phpfpm;
   #fastcgi_cache mage;
   fastcgi_cache mage_bs;
   fastcgi_cache_key "$mobile_request|$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri|$cookie_currency";

   fastcgi_hide_header "Set-Cookie";

   if ($http_cookie !~ "X-Store=1" ) {
     add_header Set-Cookie "X-Store=1; path=/";
   }

   fastcgi_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
   fastcgi_cache_min_uses 1;
   fastcgi_cache_valid 200 202 8h;
   fastcgi_cache_use_stale updating error timeout invalid_header http_500;
   fastcgi_cache_bypass $cookie_EXTERNAL_NO_CACHE $cookie_CUSTOMER_AUTH;
   fastcgi_no_cache $cookie_EXTERNAL_NO_CACHE $cookie_CUSTOMER_AUTH;
}

我尝试添加“add_header Set-Cookie”currency=${cookie_currency}; path=/"; 但似乎在 fastcgi_hide_header 行之后, $cookie_currency 变量被清除了,所以这也不起作用。

任何帮助,将不胜感激。提前谢谢你。

4

1 回答 1

0

我建议您使用 LiveHTTPHeaders 测试应用程序并解决问题。

另一方面,请记住在设置 cookie 时添加域。否则浏览器不会发送cookie。这是一个示例语法:

# I set the expiricy for 24 hours
add_header Set-Cookie "currency=${cookie_currency};Domain=www.burdastyle.co.uk;Path=/;Max-Age=86400";

问候,

于 2014-04-03T18:52:42.677 回答