Как обслуживать статические файлы в 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;
}