respond
寫入硬編碼/靜態回應給客戶端。
如果主體非空,此指令會在 Content-Type
標頭尚未設定時設定它。預設值為 text/plain; utf-8
,除非主體是有效的 JSON 物件或陣列,否則會設定為 application/json
。對於所有其他類型的內容,請使用 header
指令 明確設定適當的 Content-Type。
語法
respond [<matcher>] <status>|<body> [<status>] {
body <text>
close
}
-
<狀態> 是要寫入的 HTTP 狀態碼。
如果為
103
(早期提示),回應會在沒有主體的情況下寫入,處理器鏈會繼續。(HTTP1xx
回應是資訊性的,不是最終的。)預設值:
200
-
<主體> 是要寫入的回應主體。
-
body 是提供主體的另一種方式;如果有多行,會很方便。
-
close 會在寫入回應後關閉客戶端與伺服器的連線。
澄清一下,第一個非比對器參數可以是 3 位數狀態碼或回應主體字串。如果是主體,下一個參數可以是狀態碼。
範例
對所有健康檢查寫入一個空 200 狀態,並對所有其他要求寫入一個簡單的回應主體
example.com {
respond /health-check 200
respond "Hello, world!"
}
寫入一個錯誤回應並關閉連線
example.com {
respond /secret/* "Access denied" 403 {
close
}
}
使用 heredoc 語法 來控制空白,並設定 Content-Type
標頭以符合回應主體,寫入一個 HTML 回應
example.com {
header Content-Type text/html
respond <<HTML
<html>
<head><title>Foo</title></head>
<body>Foo</body>
</html>
HTML 200
}