Minor improvements on storage http handlers.

This commit is contained in:
Andrey Antukh 2021-01-09 12:22:08 +01:00 committed by Alonso Torres
parent 77c1163591
commit d32cacf1da
2 changed files with 37 additions and 29 deletions

View file

@ -22,35 +22,42 @@
(def ^:private signature-max-age (def ^:private signature-max-age
(dt/duration {:hours 24 :minutes 15})) (dt/duration {:hours 24 :minutes 15}))
(defn- generic-handler (defn- serve-object
[storage request id] [storage obj]
(if-let [obj (sto/get-object storage id)] (let [mdata (meta obj)
(let [mdata (meta obj) backend (sto/resolve-backend storage (:backend obj))]
backend (sto/resolve-backend storage (:backend obj))] (case (:type backend)
(case (:type backend) :db
:db {:status 200
{:status 200 :headers {"content-type" (:content-type mdata)
:headers {"content-type" (:content-type mdata) "cache-control" (str "max-age=" (inst-ms cache-max-age))}
:body (sto/get-object-data storage obj)}
:s3
(let [url (sto/get-object-url storage obj {:max-age signature-max-age})]
{:status 307
:headers {"location" (str url)
"x-host" (:host url)
"cache-control" (str "max-age=" (inst-ms cache-max-age))} "cache-control" (str "max-age=" (inst-ms cache-max-age))}
:body (sto/get-object-data storage obj)} :body ""})
:s3 :fs
(let [url (sto/get-object-url storage obj {:max-age signature-max-age})] (let [url (sto/get-object-url storage obj)]
{:status 307 {:status 204
:headers {"location" (str url) :headers {"x-accel-redirect" (:path url)
"x-host" (:host url) "content-type" (:content-type mdata)
"cache-control" (str "max-age=" (inst-ms cache-max-age))} "cache-control" (str "max-age=" (inst-ms cache-max-age))
:body ""}) }
:body ""}))))
:fs (defn- generic-handler
(let [url (sto/get-object-url storage obj)] [{:keys [pool] :as storage} request id]
{:status 200 (with-open [conn (db/open pool)]
:headers {"x-accel-redirect" (:path url) (let [storage (assoc storage :conn conn)
"content-type" (:content-type mdata) obj (sto/get-object storage id)]
"cache-control" (str "max-age=" (inst-ms cache-max-age))} (if obj
:body ""}))) (serve-object storage obj)
{:status 404 {:status 404 :body ""}))))
:body ""}))
(defn coerce-id (defn coerce-id
[id] [id]

View file

@ -37,7 +37,7 @@ http {
map $http_upgrade $connection_upgrade { map $http_upgrade $connection_upgrade {
default upgrade; default upgrade;
'' close; '' close;
} }
# include /etc/nginx/sites-enabled/*; # include /etc/nginx/sites-enabled/*;
@ -60,6 +60,8 @@ http {
etag off; etag off;
root /home/penpot/penpot/frontend/resources/public;
location @handle_redirect { location @handle_redirect {
set $redirect_uri "$upstream_http_location"; set $redirect_uri "$upstream_http_location";
set $redirect_host "$upstream_http_x_host"; set $redirect_host "$upstream_http_x_host";
@ -90,7 +92,7 @@ http {
location /internal/assets { location /internal/assets {
internal; internal;
alias /home/penpot/penpot/backend/resources/public/assets; alias /home/penpot/penpot/backend/resources/public/assets;
add_header x-accel-redirect "$upstream_http_x_accel_redirect"; add_header x-internal-redirect "$upstream_http_x_accel_redirect";
} }
location /api { location /api {
@ -114,7 +116,6 @@ http {
} }
location / { location / {
root /home/penpot/penpot/frontend/resources/public;
add_header Cache-Control "no-cache, max-age=0"; add_header Cache-Control "no-cache, max-age=0";
} }
} }