gpt4 book ai didi

varnish - 排除 Cookie 大小导致的 500 错误

转载 作者:行者123 更新时间:2023-12-03 17:47:25 25 4
gpt4 key购买 nike

由于跟踪 cookie 将我们域的整体 cookie 大小推到 4kb 以上(这是一个页面查看 cookie,因此每次访问新页面时它都会附加页面名称)。

我可以使用带有非常大的 cookie 有效负载的 curl 来重现该问题。在这样做时,我已经能够验证 500 的确切来源(我们从 Cloudflare 到 Varnish 再到后端网络服务器)。我已经验证失败的请求不会到达网络服务器,所以我相信 Varnish 是为 500 提供服务的请求。我还观看了 varnishlog 并看到了 500 条。

这是来自 varnishlog 的示例响应

--  VCL_return     hash
-- VCL_call HASH
-- VCL_return lookup
-- Hit 57254162
-- VCL_call HIT
-- VCL_return deliver
-- RespProtocol HTTP/1.1
-- RespStatus 200
-- RespReason OK
-- RespHeader X-Powered-By: Express
-- RespHeader Date: Thu, 01 Aug 2019 23:05:52 GMT
-- RespHeader Content-Type: application/json; charset=utf-8
-- RespHeader Content-Length: 1174
-- RespHeader X-Varnish: 57156196 57519178
-- RespHeader Age: 86
-- RespHeader Via: 1.1 varnish-v4
-- VCL_call DELIVER
-- RespHeader X-Cache: HIT
-- RespUnset X-Powered-By: Express
-- VCL_return deliver
-- Timestamp Process: 1564700838.564547 0.000354 0.000354
-- RespHeader Accept-Ranges: bytes
-- Debug "RES_MODE 2"
-- RespHeader Connection: keep-alive
-- Error workspace_client overflow
-- RespProtocol HTTP/1.1
-- RespStatus 500
-- RespReason Internal Server Error
-- Timestamp Resp: 1564700838.564580 0.000387 0.000033
-- ReqAcct 10063 0 10063 0 0 0
-- End

这是我添加到 vcl_recv 部分以删除有问题的 cookie 的内容
set req.http.Cookie = regsuball(req.http.Cookie, "_loc_[^;]+(; )?", "");

我不明白这里的两个 RespStatus 条目有什么意义。为什么是200,然后是500?我还注意到,如果我使用使用 HTTP/1.1 的 curl,我会得到 500,但如果我使用使用 HTTP/2 的 HTTPie,我会得到 200。这是预期的吗? Varnish 会根据 http 版本以不同的方式处理 cookie 大小吗?

*已编辑:我想我已经弄清楚了两种响应状态的不同之处在于,一种是将内容交付到 Varnish ,第二种是将内容交付给客户端。

最佳答案

正如日志所说,工作空间太小而无法容纳事务(尤其是 header ),请尝试增加它:

varnishadm param.set workspace_client 128k

长篇大论:varnish 为每个事务使用一个“worspace”。这是一 block 用于分配数据的内存,整个 block 在事务结束时被清除。 header 特别是被复制到工作区中,并且每次添加或修改 header 时,它也会去那里。

这里的问题是你没有足够的空间。早期版本只会 panic ,但它现在更聪明了,只会产生一个状态为 500 的合成响应。诀窍是它在复制初始响应后意识到缺少工作空间,因此您可以在日志中看到这两个响应。

关于varnish - 排除 Cookie 大小导致的 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57318306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com