123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- = 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.
- == Options
- // @todo Might be worth moving cowboy_clear/tls/stream_h options
- // to their respective manual, when they are added.
- [source,erlang]
- ----
- opts() :: #{
- chunked => boolean(),
- connection_type => worker | supervisor,
- env => cowboy_middleware:env(),
- http10_keepalive => boolean(),
- idle_timeout => timeout(),
- inactivity_timeout => timeout(),
- linger_timeout => timeout(),
- 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(),
- max_skip_body_length => non_neg_integer(),
- middlewares => [module()],
- proxy_header => boolean(),
- request_timeout => timeout(),
- sendfile => boolean(),
- shutdown_timeout => timeout(),
- stream_handlers => [module()]
- }
- ----
- Configuration for the HTTP/1.1 protocol.
- This configuration is passed to Cowboy when starting listeners
- using `cowboy:start_clear/3` or `cowboy:start_tls/3` functions.
- It can be updated without restarting listeners using the
- Ranch functions `ranch:get_protocol_options/1` and
- `ranch:set_protocol_options/2`.
- The default value is given next to the option name:
- chunked (true)::
- Whether chunked transfer-encoding is enabled for HTTP/1.1 connections.
- Note that a response streamed to the client without the chunked
- transfer-encoding and without a content-length header will result
- in the connection being closed at the end of the response body.
- connection_type (supervisor)::
- Whether the connection process also acts as a supervisor.
- env (#{})::
- Middleware environment.
- http10_keepalive (true)::
- Whether keep-alive is enabled for HTTP/1.0 connections.
- idle_timeout (60000)::
- Time in ms with no data received before Cowboy closes the connection.
- inactivity_timeout (300000)::
- Time in ms with nothing received at all before Cowboy closes the connection.
- 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].
- 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.
- max_request_line_length (8000)::
- Maximum length of the request line.
- 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.
- middlewares ([cowboy_router, cowboy_handler])::
- Middlewares to run for every request.
- proxy_header (false)::
- Whether incoming connections have a PROXY protocol header. The
- proxy information will be passed forward via the `proxy_header`
- key of the Req object.
- request_timeout (5000)::
- Time in ms with no requests before Cowboy closes the connection.
- sendfile (true)::
- Whether the sendfile syscall may be used. It can be useful to disable
- it on systems where the syscall has a buggy implementation, for example
- under VirtualBox when using shared folders.
- 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.
- == Changelog
- * *2.6*: The `chunked`, `http10_keepalive`, `proxy_header` and `sendfile` options were added.
- * *2.5*: The `linger_timeout` option was added.
- * *2.2*: The `max_skip_body_length` option was added.
- * *2.0*: The `timeout` option was renamed `request_timeout`.
- * *2.0*: The `idle_timeout`, `inactivity_timeout` and `shutdown_timeout` options were added.
- * *2.0*: The `max_method_length` option was added.
- * *2.0*: The `max_request_line_length` default was increased from 4096 to 8000.
- * *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.
- * *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)]
|