respond
向客户端写入硬编码/静态响应。
如果主体非空,则此指令会设置 Content-Type
标头(如果尚未设置)。默认值为 text/plain; utf-8
,除非主体是有效的 JSON 对象或数组,在这种情况下,它将设置为 application/json
。对于所有其他类型的內容,请使用 header
指令 显式设置正确的 Content-Type。
语法
respond [<matcher>] <status>|<body> [<status>] {
body <text>
close
}
-
<status> 是要写入的 HTTP 状态代码。
如果为
103
(早期提示),则将在没有主体的情况下写入响应,并且处理程序链将继续。(HTTP1xx
响应是信息性的,而不是最终的。)默认值:
200
-
<body> 是要写入的响应主体。
-
body 是提供主体的另一种方式;如果主体是多行,则很方便。
-
close 将在写入响应后关闭客户端与服务器的连接。
为了澄清,第一个非匹配器参数可以是 3 位数状态代码或响应主体字符串。如果它是主体,则下一个参数可以是状态代码。
示例
向所有健康检查写入一个空 200 状态,并带有空主体,以及一个简单的响应主体,用于所有其他请求
example.com {
respond /health-check 200
respond "Hello, world!"
}
写入错误响应并关闭连接
example.com {
respond /secret/* "Access denied" 403 {
close
}
}
写入 HTML 响应,使用 heredoc 语法 来控制空白,并设置 Content-Type
标头以匹配响应主体
example.com {
header Content-Type text/html
respond <<HTML
<html>
<head><title>Foo</title></head>
<body>Foo</body>
</html>
HTML 200
}