2016-12-22 14:36:07 +01:00
|
|
|
= cowboy_http(3)
|
|
|
|
|
|
|
|
== Name
|
|
|
|
|
|
|
|
cowboy_http - HTTP/1.1
|
|
|
|
|
|
|
|
== Description
|
|
|
|
|
|
|
|
The module `cowboy_http` implements HTTP/1.1 and HTTP/1.0
|
|
|
|
as a Ranch protocol.
|
|
|
|
|
2016-12-22 18:13:25 +01:00
|
|
|
== Options
|
2016-12-22 14:36:07 +01:00
|
|
|
|
2017-05-05 13:48:25 +02:00
|
|
|
// @todo Might be worth moving cowboy_clear/tls/stream_h options
|
|
|
|
// to their respective manual, when they are added.
|
|
|
|
|
2016-12-22 14:36:07 +01:00
|
|
|
[source,erlang]
|
|
|
|
----
|
|
|
|
opts() :: #{
|
2017-05-05 13:48:25 +02:00
|
|
|
connection_type => worker | supervisor,
|
|
|
|
env => cowboy_middleware:env(),
|
|
|
|
idle_timeout => timeout(),
|
|
|
|
inactivity_timeout => timeout(),
|
2018-05-16 16:01:30 +02:00
|
|
|
linger_timeout => timeout(),
|
2017-05-05 13:48:25 +02:00
|
|
|
max_empty_lines => non_neg_integer(),
|
|
|
|
max_header_name_length => non_neg_integer(),
|
|
|
|
max_header_value_length => non_neg_integer(),
|
|
|
|
max_headers => non_neg_integer(),
|
|
|
|
max_keepalive => non_neg_integer(),
|
|
|
|
max_method_length => non_neg_integer(),
|
|
|
|
max_request_line_length => non_neg_integer(),
|
2017-12-07 22:12:34 +01:00
|
|
|
max_skip_body_length => non_neg_integer(),
|
2017-05-05 13:48:25 +02:00
|
|
|
middlewares => [module()],
|
|
|
|
request_timeout => timeout(),
|
|
|
|
shutdown_timeout => timeout(),
|
|
|
|
stream_handlers => [module()]
|
2016-12-22 14:36:07 +01:00
|
|
|
}
|
|
|
|
----
|
|
|
|
|
|
|
|
Configuration for the HTTP/1.1 protocol.
|
|
|
|
|
|
|
|
This configuration is passed to Cowboy when starting listeners
|
2017-06-07 15:15:54 +02:00
|
|
|
using `cowboy:start_clear/3` or `cowboy:start_tls/3` functions.
|
2016-12-22 14:36:07 +01:00
|
|
|
|
|
|
|
It can be updated without restarting listeners using the
|
|
|
|
Ranch functions `ranch:get_protocol_options/1` and
|
|
|
|
`ranch:set_protocol_options/2`.
|
|
|
|
|
2016-12-22 18:13:25 +01:00
|
|
|
The default value is given next to the option name:
|
2016-12-22 14:36:07 +01:00
|
|
|
|
2017-05-05 13:48:25 +02:00
|
|
|
connection_type (supervisor)::
|
|
|
|
Whether the connection process also acts as a supervisor.
|
|
|
|
|
2016-12-22 14:36:07 +01:00
|
|
|
env (#{})::
|
|
|
|
Middleware environment.
|
|
|
|
|
2017-05-03 17:44:00 +02:00
|
|
|
idle_timeout (60000)::
|
|
|
|
Time in ms with no data received before Cowboy closes the connection.
|
|
|
|
|
2017-05-05 13:48:25 +02:00
|
|
|
inactivity_timeout (300000)::
|
|
|
|
Time in ms with nothing received at all before Cowboy closes the connection.
|
|
|
|
|
2018-05-16 16:01:30 +02:00
|
|
|
linger_timeout (1000)::
|
|
|
|
Time in ms that Cowboy will wait when closing the connection. This is
|
|
|
|
necessary to avoid the TCP reset problem as described in the
|
|
|
|
https://tools.ietf.org/html/rfc7230#section-6.6[section 6.6 of RFC7230].
|
|
|
|
|
2016-12-22 14:36:07 +01:00
|
|
|
max_empty_lines (5)::
|
|
|
|
Maximum number of empty lines before a request.
|
|
|
|
|
|
|
|
max_header_name_length (64)::
|
|
|
|
Maximum length of header names.
|
|
|
|
|
|
|
|
max_header_value_length (4096)::
|
|
|
|
Maximum length of header values.
|
|
|
|
|
|
|
|
max_headers (100)::
|
|
|
|
Maximum number of headers allowed per request.
|
|
|
|
|
|
|
|
max_keepalive (100)::
|
|
|
|
Maximum number of requests allowed per connection.
|
|
|
|
|
|
|
|
max_method_length (32)::
|
|
|
|
Maximum length of the method.
|
|
|
|
|
2017-05-05 13:48:25 +02:00
|
|
|
max_request_line_length (8000)::
|
|
|
|
Maximum length of the request line.
|
|
|
|
|
2017-12-07 22:12:34 +01:00
|
|
|
max_skip_body_length (1000000)::
|
|
|
|
Maximum length Cowboy is willing to skip when the user code did not read the body fully.
|
|
|
|
When the remaining length is too large or unknown Cowboy will close the connection.
|
|
|
|
|
2016-12-22 14:36:07 +01:00
|
|
|
middlewares ([cowboy_router, cowboy_handler])::
|
|
|
|
Middlewares to run for every request.
|
|
|
|
|
|
|
|
request_timeout (5000)::
|
|
|
|
Time in ms with no requests before Cowboy closes the connection.
|
|
|
|
|
2017-05-05 13:48:25 +02:00
|
|
|
shutdown_timeout (5000)::
|
|
|
|
Time in ms Cowboy will wait for child processes to shut down before killing them.
|
|
|
|
|
|
|
|
stream_handlers ([cowboy_stream_h])::
|
|
|
|
Ordered list of stream handlers that will handle all stream events.
|
|
|
|
|
2016-12-22 14:36:07 +01:00
|
|
|
== Changelog
|
|
|
|
|
2018-05-16 16:01:30 +02:00
|
|
|
* *2.5*: The `linger_timeout` option was added.
|
2017-12-07 22:12:34 +01:00
|
|
|
* *2.2*: The `max_skip_body_length` option was added.
|
2017-05-05 13:48:25 +02:00
|
|
|
* *2.0*: The `timeout` option was renamed `request_timeout`.
|
|
|
|
* *2.0*: The `idle_timeout`, `inactivity_timeout` and `shutdown_timeout` options were added.
|
2016-12-22 14:36:07 +01:00
|
|
|
* *2.0*: The `max_method_length` option was added.
|
2016-12-22 18:30:52 +00:00
|
|
|
* *2.0*: The `max_request_line_length` default was increased from 4096 to 8000.
|
2017-05-05 13:48:25 +02:00
|
|
|
* *2.0*: The `connection_type` option was added.
|
|
|
|
* *2.0*: The `env` option is now a map instead of a proplist.
|
|
|
|
* *2.0*: The `stream_handlers` option was added.
|
|
|
|
* *2.0*: The `compress` option was removed in favor of the `cowboy_compress_h` stream handler.
|
2016-12-22 14:36:07 +01:00
|
|
|
* *2.0*: Options are now a map instead of a proplist.
|
|
|
|
* *2.0*: Protocol introduced. Replaces `cowboy_protocol`.
|
|
|
|
|
|
|
|
== See also
|
|
|
|
|
|
|
|
link:man:cowboy(7)[cowboy(7)],
|
|
|
|
link:man:cowboy_http2(3)[cowboy_http2(3)],
|
|
|
|
link:man:cowboy_websocket(3)[cowboy_websocket(3)]
|