У меня есть быстрое решение, которое, как я считаю, обеспечит безопасную загрузку файлов для сайтов, требующих авторизации.
В целом, нужно настроить Authentication Based on Subrequest Result | NGINX Documentation для загрузок. Единственная проблема в том, что я не могу найти URL, который возвращал бы 403/401 при включенной требовательности к входу, поэтому при попытке доступа к загрузке без авторизации возникает ошибка 500. Это произойдет только в том случае, если у кого-то будет URL загрузки и он попытается получить к нему доступ, не войдя в систему, так что это не кажется слишком серьезной проблемой.
Это что-то вроде этого:
# JP
location = /auth {
internal;
proxy_pass http://discourse/categories;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
# END JP
location ~ ^/uploads/ {
auth_request /auth; #$JP
# ПРИМЕЧАНИЕ: очень раздражает, что мы не можем просто определить заголовки
# на верхнем уровне и наследовать их.
#