Pleroma v1.1.9-10-g42f76306+dev Pleroma.ReverseProxy View Source
A reverse proxy.
Pleroma.ReverseProxy.call(conn, url, options)
It is not meant to be added into a plug pipeline, but to be called from another plug or controller.
Supports ["GET", "HEAD"] HTTP methods, and only allows [200, 206, 304] status codes.
Responses are chunked to the client while downloading from the upstream.
Some request / responses headers are preserved:
- request:
["accept", "user-agent", "accept-encoding", "cache-control", "if-modified-since", "if-unmodified-since", "if-none-match", "if-range", "range"] - response:
["etag", "date", "last-modified", "cache-control", "content-type", "content-disposition", "content-encoding", "content-range", "accept-ranges", "vary"]
If no caching headers (["etag", "date", "last-modified", "cache-control"]) are returned by upstream, cache-control will be
set to "public, max-age=1209600".
Options:
redirect_on_failure(defaultfalse). Redirects the client to the real remote URL if there's any HTTP errors. Any error during body processing will not be redirected as the response is chunked. This may expose remote URL, clients IPs, ….max_body_length(default:infinity): limits the content length to be approximately the specified length. It is validated with thecontent-lengthheader and also verified when proxying.max_read_duration(default30000ms): the total time the connection is allowed to read from the remote upstream.failed_request_ttl(default60000ms): the time the failed request is cached and cannot be retried.inline_content_types:truewill not altercontent-disposition(up to the upstream),falsewill addcontent-disposition: attachmentto any request,a list of whitelisted content types
keep_user_agentwill forward the client's user-agent to the upstream. This may be useful if the upstream is doing content transformation (encoding, …) depending on the request.
req_headers,resp_headersadditional headers.http: options for hackney.
Link to this section Summary
Link to this section Types
option()
View Sourceoption() ::
{:keep_user_agent, boolean()}
| {:max_read_duration, :timer.time() | :infinity}
| {:max_body_length, non_neg_integer() | :infinity}
| {:failed_request_ttl, :timer.time() | :infinity}
| {:http, []}
| {:req_headers, [{String.t(), String.t()}]}
| {:resp_headers, [{String.t(), String.t()}]}
| {:inline_content_types, boolean() | [String.t()]}
| {:redirect_on_failure, boolean()}
Link to this section Functions
call(conn, url, opts \\ [])
View Sourcecall(Plug.Conn.t(), url :: String.t(), [option()]) :: Plug.Conn.t()