簡體   English   中英

在 Fastly vcl_error 子例程中獲取錯誤原因

[英]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.statusobj.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' ,其中包含大量關於VarnishVCL的資源,可能對您有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM