aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhref <href@random.sh>2018-11-23 23:59:24 +0100
committerhref <href@random.sh>2018-11-30 18:00:57 +0100
commit97b00d366f5d0bdf80efa2c425ccc8fb16681256 (patch)
tree72391d30cecb559b40565d90048018507a3b2995
parenta2640c8088f46a16732a63978e92161c5199f396 (diff)
downloadpleroma-97b00d366f5d0bdf80efa2c425ccc8fb16681256.tar.gz
reverse_proxy: more headers
-rw-r--r--installation/pleroma.nginx4
-rw-r--r--lib/pleroma/reverse_proxy.ex22
2 files changed, 14 insertions, 12 deletions
diff --git a/installation/pleroma.nginx b/installation/pleroma.nginx
index f0e684f2c..e1184fe77 100644
--- a/installation/pleroma.nginx
+++ b/installation/pleroma.nginx
@@ -70,10 +70,12 @@ server {
client_max_body_size 16m;
}
- location /proxy {
+ location ~ ^/(media|proxy) {
proxy_cache pleroma_media_cache;
proxy_cache_lock on;
proxy_ignore_client_abort on;
+ proxy_buffering off;
+ chunked_transfer_encoding on;
proxy_pass http://localhost:4000;
}
}
diff --git a/lib/pleroma/reverse_proxy.ex b/lib/pleroma/reverse_proxy.ex
index c8b14a89d..4f9f0b169 100644
--- a/lib/pleroma/reverse_proxy.ex
+++ b/lib/pleroma/reverse_proxy.ex
@@ -1,8 +1,8 @@
defmodule Pleroma.ReverseProxy do
- @keep_req_headers ~w(accept user-agent accept-encoding cache-control if-modified-since if-none-match range)
+ @keep_req_headers ~w(accept user-agent accept-encoding cache-control if-modified-since if-unmodified-since if-none-match if-range range)
@resp_cache_headers ~w(etag date last-modified cache-control)
@keep_resp_headers @resp_cache_headers ++
- ~w(content-type content-disposition accept-ranges vary)
+ ~w(content-type content-disposition content-encoding content-range accept-ranges vary)
@default_cache_control_header "public, max-age=1209600"
@valid_resp_codes [200, 206, 304]
@max_read_duration :timer.minutes(2)
@@ -226,8 +226,10 @@ defmodule Pleroma.ReverseProxy do
end
defp get_content_type(headers) do
- {_, content_type} = List.keyfind(headers, "content-type", 0, {"content-type", "application/octet-stream"})
- [content_type | _] = String.split(content_type, ";")
+ {_, content_type} =
+ List.keyfind(headers, "content-type", 0, {"content-type", "application/octet-stream"})
+
+ [content_type | _] = String.split(content_type, ";")
content_type
end
@@ -259,12 +261,11 @@ defmodule Pleroma.ReverseProxy do
end
defp build_resp_headers(headers, opts) do
- headers =
- headers
- |> Enum.filter(fn {k, _} -> k in @keep_resp_headers end)
- |> build_resp_cache_headers(opts)
- |> build_resp_content_disposition_header(opts)
- |> (fn headers -> headers ++ Keyword.get(opts, :resp_headers, []) end).()
+ headers
+ |> Enum.filter(fn {k, _} -> k in @keep_resp_headers end)
+ |> build_resp_cache_headers(opts)
+ |> build_resp_content_disposition_header(opts)
+ |> (fn headers -> headers ++ Keyword.get(opts, :resp_headers, []) end).()
end
defp build_resp_cache_headers(headers, opts) do
@@ -324,7 +325,6 @@ defmodule Pleroma.ReverseProxy do
if duration > max do
{:error, :read_duration_exceeded}
else
- Logger.debug("Duration #{inspect(duration)}")
{:ok, {duration, :erlang.system_time(:millisecond)}}
end
end