diff --git a/backend/src/app/http/assets.clj b/backend/src/app/http/assets.clj index 7a1cb0536..a104773cb 100644 --- a/backend/src/app/http/assets.clj +++ b/backend/src/app/http/assets.clj @@ -22,35 +22,42 @@ (def ^:private signature-max-age (dt/duration {:hours 24 :minutes 15})) -(defn- generic-handler - [storage request id] - (if-let [obj (sto/get-object storage id)] - (let [mdata (meta obj) - backend (sto/resolve-backend storage (:backend obj))] - (case (:type backend) - :db - {:status 200 - :headers {"content-type" (:content-type mdata) +(defn- serve-object + [storage obj] + (let [mdata (meta obj) + backend (sto/resolve-backend storage (:backend obj))] + (case (:type backend) + :db + {:status 200 + :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))} - :body (sto/get-object-data storage obj)} + :body ""}) - :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))} - :body ""}) + :fs + (let [url (sto/get-object-url storage obj)] + {:status 204 + :headers {"x-accel-redirect" (:path url) + "content-type" (:content-type mdata) + "cache-control" (str "max-age=" (inst-ms cache-max-age)) + } + :body ""})))) - :fs - (let [url (sto/get-object-url storage obj)] - {:status 200 - :headers {"x-accel-redirect" (:path url) - "content-type" (:content-type mdata) - "cache-control" (str "max-age=" (inst-ms cache-max-age))} - :body ""}))) - {:status 404 - :body ""})) +(defn- generic-handler + [{:keys [pool] :as storage} request id] + (with-open [conn (db/open pool)] + (let [storage (assoc storage :conn conn) + obj (sto/get-object storage id)] + (if obj + (serve-object storage obj) + {:status 404 :body ""})))) (defn coerce-id [id] diff --git a/docker/devenv/files/nginx.conf b/docker/devenv/files/nginx.conf index a4c615486..78a50b949 100644 --- a/docker/devenv/files/nginx.conf +++ b/docker/devenv/files/nginx.conf @@ -37,7 +37,7 @@ http { map $http_upgrade $connection_upgrade { default upgrade; - '' close; + '' close; } # include /etc/nginx/sites-enabled/*; @@ -60,6 +60,8 @@ http { etag off; + root /home/penpot/penpot/frontend/resources/public; + location @handle_redirect { set $redirect_uri "$upstream_http_location"; set $redirect_host "$upstream_http_x_host"; @@ -90,7 +92,7 @@ http { location /internal/assets { internal; 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 { @@ -114,7 +116,6 @@ http { } location / { - root /home/penpot/penpot/frontend/resources/public; add_header Cache-Control "no-cache, max-age=0"; } }