W3cubDocs

/Phoenix

Plug.Adapters.Cowboy

Adapter interface to the Cowboy webserver.

Options

  • :ip - the ip to bind the server to. Must be a tuple in the format {x, y, z, w}.

  • :port - the port to run the server. Defaults to 4000 (http) and 4040 (https).

  • :acceptors - the number of acceptors for the listener. Defaults to 100.

  • :max_connections - max number of connections supported. Defaults to 16_384.

  • :dispatch - manually configure Cowboy’s dispatch. If this option is used, the given plug won’t be initialized nor dispatched to (and doing so becomes the user’s responsibility).

  • :ref - the reference name to be used. Defaults to plug.HTTP (http) and plug.HTTPS (https). This is the value that needs to be given on shutdown.

  • :compress - Cowboy will attempt to compress the response body. Defaults to false.

  • :timeout - Time in ms with no requests before Cowboy closes the connection. Defaults to 5000ms.

  • :protocol_options - Specifies remaining protocol options, see Cowboy protocol docs.

All other options are given to the underlying transport.

Summary

Functions

child_spec(scheme, plug, opts, cowboy_options \\ [])

Returns a child spec to be supervised by your application

http(plug, opts, cowboy_options \\ [])

Run cowboy under http

https(plug, opts, cowboy_options \\ [])

Run cowboy under https

shutdown(ref)

Shutdowns the given reference

Functions

child_spec(scheme, plug, opts, cowboy_options \\ [])

Returns a child spec to be supervised by your application.

Example

Presuming your Plug module is named MyRouter you can add it to your supervision tree like so using this function:

defmodule MyApp do
  use Application

  def start(_type, _args) do
    import Supervisor.Spec

    children = [
      Plug.Adapters.Cowboy.child_spec(:http, MyRouter, [], [port: 4001])
    ]

    opts = [strategy: :one_for_one, name: MyApp.Supervisor]
    Supervisor.start_link(children, opts)
  end
end

http(plug, opts, cowboy_options \\ [])

http(module, Keyword.t, Keyword.t) ::
  {:ok, pid} |
  {:error, :eaddrinuse} |
  {:error, term}

Run cowboy under http.

Example

# Starts a new interface
Plug.Adapters.Cowboy.http MyPlug, [], port: 80

# The interface above can be shutdown with
Plug.Adapters.Cowboy.shutdown MyPlug.HTTP

https(plug, opts, cowboy_options \\ [])

https(module, Keyword.t, Keyword.t) ::
  {:ok, pid} |
  {:error, :eaddrinuse} |
  {:error, term}

Run cowboy under https.

Besides the options described in the module documentation, this module also accepts all options defined in [the ssl erlang module] (http://www.erlang.org/doc/man/ssl.html), like keyfile, certfile, cacertfile, dhfile and others.

The certificate files can be given as a relative path. For such, the :otp_app option must also be given and certificates will be looked from the priv directory of the given application.

Example

# Starts a new interface
Plug.Adapters.Cowboy.https MyPlug, [],
  port: 443,
  password: "SECRET",
  otp_app: :my_app,
  keyfile: "priv/ssl/key.pem",
  certfile: "priv/ssl/cert.pem",
  dhfile: "priv/ssl/dhparam.pem"

# The interface above can be shutdown with
Plug.Adapters.Cowboy.shutdown MyPlug.HTTPS

shutdown(ref)

Shutdowns the given reference.

© 2013 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/plug/Plug.Adapters.Cowboy.html