Как обслуживать статические файлы в nginx условно на основе ответа прокси?

У меня есть папка /static/uploads/limited и мне нужно настроить nginx для обслуживания некоторых файлов для конкретных пользователей. У меня тоже есть API /api/auth/canIDownloadThis какие ответы JSON, как

{
  "result:"true"
}

Как я могу сделать nginx, чтобы проверить ответ моего API proxy_pass перед обслуживанием этой конкретной папки?

псевдокод, который мне нужен, выглядит примерно так:

location /static/uploads/limited{
    IF /api/canIdownloadThis IS TRUE
    THEN alias /my_secret_folder_path
} 

Так как я не хочу использовать basic_auth. Спасибо.

1 ответ

Решение

Благодаря @stephenKing мне нужно скомпилировать nginx с --with-http_auth_request_module а затем создать API, который отвечает 403 или же 200

location ~* /(\w+)/static/limited/(?:/_[\d]+\.[\d]+\.[\d]+)?/(.*)$ 
{
    auth_request /IC/contents/can_i_access_limited;
    alias /home/A/iB-system/C/$1/static/uploads/$2;
   }
Другие вопросы по тегам