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 会在写完响应后关闭客户端与服务器的连接。
澄清一下,第一个非匹配器参数可以是3位状态码,也可以是响应体字符串。如果它是响应体,下一个参数可以是状态码。
示例
对所有健康检查写入空响应体的200状态,并对所有其他请求写入简单响应体:
example.com { respond /health-check 200 respond "Hello, world!" }
写入错误响应并关闭连接:
example.com { respond /secret/* "Access denied" 403 { close } }
使用heredoc语法控制空白并写入HTML响应,同时设置Content-Type头以匹配响应体:
example.com { header Content-Type text/html respond <<HTML <html> <head><title>Foo</title></head> <body>Foo</body> </html> HTML 200 }