respond
向客户端返回一个硬编码/静态响应。
如果响应体非空,本指令会在尚未设置 Content-Type 头时设置该头。默认值为 text/plain; utf-8,除非响应体是一个有效的 JSON 对象或数组,此时会设置为 application/json。对于所有其他类型的内容,请使用 header 指令 显式设置正确的 Content-Type。
语法
respond [<matcher>] <status>|<body> [<status>] {
body <text>
close
}
-
<status> 是要写入的 HTTP 状态码。
如果为
103(Early Hints),响应将不带主体写出且处理链将继续。(HTTP1xx响应是信息性的,而非最终响应。)默认:
200 -
<body> 是要写入的响应体。
-
body 是提供响应体的另一种方式;当响应体为多行时很方便。
-
close 会在写入响应后关闭客户端与服务器的连接。
为澄清,首个非匹配器参数可以是三位数的状态码,也可以是响应体字符串。如果它是响应体,下一个参数可以是状态码。
示例
向所有健康检查写入一个空的 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
}