respond
Writes a hard-coded/static response to the client.
If the body is non-empty, this directive sets the Content-Type
header if it is not already set. The default value is text/plain; utf-8
unless the body is a valid JSON object or array, in which case it is set to application/json
. For all other types of content, set the proper Content-Type explicitly using the header
directive.
Syntax
respond [<matcher>] <status>|<body> [<status>] {
body <text>
close
}
-
<status> is the HTTP status code to write.
If
103
(Early Hints), the response will be written without a body and the handler chain will continue. (HTTP1xx
responses are informational, not final.)Default:
200
-
<body> is the response body to write.
-
body is an alternate way to provide a body; convenient if it is multiple lines.
-
close will close the client's connection to the server after writing the response.
To clarify, the first non-matcher argument can be either a 3-digit status code or a response body string. If it is a body, the next argument can be the status code.
Examples
Write an empty 200 status with an empty body to all health checks, and a simple response body to all other requests:
example.com {
respond /health-check 200
respond "Hello, world!"
}
Write an error response and close the connection:
example.com {
respond /secret/* "Access denied" 403 {
close
}
}
Write an HTML response, using heredoc syntax to control whitespace, and also setting the Content-Type
header to match the response body:
example.com {
header Content-Type text/html
respond <<HTML
<html>
<head><title>Foo</title></head>
<body>Foo</body>
</html>
HTML 200
}