Apache2 合并多个 Set-Cookie 标头

Apache2 合并多个 Set-Cookie 标头

我们有一台运行 varnish 的服务器。为了使其与 Magento 正确配合,它会分析是否传递了 Set-Cookie: EXTERNAL_NO_CACHE=1 标头。

唯一的问题是我们有几个(3 或 4 个)以“Set-Cookie:”开头的标头。Varnish 有一个限制,它只能分析第一个“Set-Cookie”标头。

因此我想问一下如何合并这些多组 cookie 标头?过去 4 天我一直在寻找这个问题,但没有任何收获 =(

也许使用 apache 的 mod_header,但我不太确定正确的方法是什么?

还有其他想法吗?

提前致谢!

附言:运行 Debian 和 Apache 2.2.9

编辑:这里有包含多个 set-cookie 行的示例标题:

root@magento-development:/# curl -I http://XXXXXXXXX
[1] 5332
root@magento-development:/# HTTP/1.1 200 OK
Date: Thu, 10 Nov 2011 14:49:56 GMT
Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny13 with Suhosin-Patch
X-Powered-By: PHP/5.2.6-1+lenny13
Set-Cookie: store=scfr; expires=Fri, 09-Nov-2012 14:49:56 GMT; path=/; domain=XXXXXXXXX; httponly
Set-Cookie: frontend=9ac04aa3912eb78eb79f98dd531f7ba6; expires=Thu, 10 Nov 2011 15:49:57 GMT; path=/; domain=XXXXXXXXX; HttpOnly
Expires: Thu, 10 Nov 2011 16:49:57 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: EXTERNAL_NO_CACHE=1; expires=Thu, 10-Nov-2011 15:49:57 GMT; path=/; domain=XXXXXXXXX; httponly
X-Cache-Debug: 1
Vary: Accept-Encoding,User-Agent
Content-Type: text/html; charset=UTF-8

答案1

编辑:修改 apache 配置以匹配帖子要求

首先,合并 cookie 标头不是一个好主意。请参阅Apache 人对此有何看法

其次,协议规范支持多个 set-cookie 标头。如果 varnish 无法处理多个 set-cookie 标头,则应视为错误并报告。

第三,您不能让 dont-cache-this varnish 规则依赖于另一个自定义标头吗?比如您可以从应用程序或 apache 中设置的 X-Magento-NoCache?它必须是 cookie 吗?例如

rewriteengine on
rewritecond %{QUERY_STRING} ___store
rewriterule .* - [E=MAGENTO_DONT_CACHE:1]

header add X-Magento-NoCache 1 env=MAGENTO_DONT_CACHE

答案2

有人可能会想出更好的答案,但如果你愿意自己构建一个新版本,你可能会发现这为未来带来了希望,或者是一个很好的最后手段:

https://www.varnish-cache.org/trac/ticket/866

相关内容