![](/img/trans.png)
[英]How to fix unterminated short string error in Varnish VCL while configuring Fastly CDN
[英]Obtain error cause inside Fastly vcl_error subroutine
Fastly 允許自定義vcl_error
子程序。 但是,如果我覆蓋它(例如
sub vcl_error {
#FASTLY error
set obj.http.Custom-Header = "foo-bar";
return(deliver);
}
),帶有錯誤原因的原始響應主體(例如“第一個字節超時”)丟失。
是否有可能獲得原因,所以我可以將它添加到額外的一些syntetic
或合成體
vcl_error
子例程由 Fastly 隱式觸發(有關何時執行此操作的示例,請參見 文檔)或使用error
語句顯式觸發。
在vcl_error
中, obj.status
和obj.response
變量提供有關錯誤性質的信息。
如果您明確觸發vcl_error
,那么在子例程中您正在調用error
語句,您應該在 ZA8CFDE6331BD59EB2AC96F8911C4B6666 中的 vcl_error 中讀取的 ZA8CFDE6331BD59EB2AC96F8911C4B666 中的 ZA8CFDE6331BD59EB2AC96F8911C4B6666 中設置自定義 HTTP vcl_error
。
例如, req
object 可用於所有子例程,因此您可以使用req.http.{NAME}
)存儲您想要用作綜合錯誤響應的一部分的任何上下文錯誤信息。
以這種方式持久化數據的一個警告是,您不能跨越某些邊界持久化數據,例如從“獲取節點”上的子例程移動到“交付節點”(請參閱集群以了解獲取之間的區別的詳細信息) /交付節點)。
在我的腦海中(另見: https://www.integralist.co.uk/posts/fastly-varnish/#breadcrumb-trail )我相信如果你從vcl_fetch
調用error
,你需要堅持數據到beresp
object 而不是req
。 Varnish 會將beresp
復制到暴露給vcl_error
子例程的obj
object。
如果您有任何其他問題或疑慮,請聯系 support@fastly.com,他們將很樂意為您提供幫助。
另請參閱Fastly 'Developer Hub' ,其中包含大量關於Varnish和VCL的資源,可能對您有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.