Как правильно организовать location с internal для отдачи mp4?

Приветствую!

Никак не могу сообразить как организовать следующее:

На сервере хранится видео по следующим путям:
/4/4/3/videoname.mp4
/4/44/3342/videoname.mp4
/24/234/3123/videoname.mp4
и т.д.

На сервере стоит только nginx.

На другом/других серверах видео формирует ссылки следующего вида

storage.com/24/234/3123/videoname.mp4?hash=45a944d...

Нужно сделать защиту для видео на сервере хранения , как то так

location / {
     proxy_pass http://127.0.0.1:port; //тут висит сервис на go который по hash должен проверять доступ и редиректить на  mp4 с заголовком X-Accel-Redirect
}

location ~ \.mp4$ {
   internal;
}


но при таком конфиге всегда срабатывает второй location при обращении к storage.com/24/234/3123/videoname.mp4?hash=45a944d...

как сделать правильный конфиг nginx, что бы запрос шел через сервис проверки хеша?
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
@aI3x
https://habr.com/post/348206/
  1. Вначале будет искаться равенство (=). Оно имеет высший приоритет.
  2. Потом будет искаться максимальный по длине префиксный location ((   ) или (^~)), после чего будет проверено, есть ли на найденном location модификатор приоритета (^~), и если он есть, то будет возвращён этот location.
  3. Потом будут проверяться регулярные выражения ((~) и (~*)) сверху вниз. При совпадении будет возвращён первый location из них.
  4. Потом вернётся тот префиксный location, который мы нашли до этого.


В вашем случае возможно так:
location ~* ".*" {
     proxy_pass http://127.0.0.1:port; //тут висит сервис на go который по hash должен проверять доступ и редиректить на  mp4 с заголовком X-Accel-Redirect
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы