Разрешить доступ с одного домена с NGINX

Я ищу решение для предотвращения горячей ссылки с NGINX для JWPlayer. Скажем, у меня есть сервер NGINX, настроенный в качестве обратного прокси-сервера по адресу http://mydomain1.com, я получу URL-адрес http://mydomain1.com/file.mp4 для своего веб-сайта, размещенного на другом VPS по адресу http://mydomain2.com. Как ограничить файл, чтобы его можно было воспроизводить только на http://mydomain2.com и больше нигде?

Я попробовал директивы allow & deny, но потом понял, что это потоковая передача HTML5, поэтому директивы будут блокировать поток для пользователей.


person David Tran    schedule 14.09.2017    source источник
comment
Итак, вы хотите, чтобы браузер говорил mydomain2.com, а затем разрешал доступ?   -  person Tarun Lalwani    schedule 14.09.2017
comment
Извините, я не ясно выразился. Я хочу, чтобы ссылка, которую я получил от домена1 (который является обратным прокси-сервером), могла воспроизводиться только на домене2 (два домена на разных хостах) с использованием проигрывателя html5. Есть ли способ настроить NGINX для этой цели? Я также пробовал директиву valid_referers, но она не работает.   -  person David Tran    schedule 14.09.2017
comment
Если серверы разные, то потребуются изменения в домене 1 nginx, а не в домене 2. У вас есть доступ к домену1 nginx?   -  person Tarun Lalwani    schedule 14.09.2017
comment
Да, конечно, у меня есть доступ к обоим серверам, и оба они работают на NGINX.   -  person David Tran    schedule 14.09.2017


Ответы (2)


Поскольку URL-адрес mp4 будет помещен в проигрыватель HTML5, это означает, что удаленный адрес (машина пользователя) всегда будет напрямую связываться с обратным прокси-сервером. Таким образом, ограничить доступ другими методами, кроме модуля защищенной ссылки nginx, невозможно. С помощью этого модуля я теперь могу ограничить доступ на основе IP-адреса пользователя, срока действия, URL-адреса и секретного слова.

person David Tran    schedule 16.09.2017

На nginx mydomain1.com. Убедитесь, что у вас есть один дополнительный блок, который прослушивает хост по умолчанию и блокирует весь трафик. Затем в существующем блоке прослушивания мы добавляем правило, разрешающее только www.mydomain2.com

map $http_referer $not_allowed {
   default 0;
   "~www.mydomain2.com" 1;
}

server {
    listen 80 default_server;

    server_name _;

    deny all;
}

server {
   listen 80;
   server_name www.mydomain1.com

   location / {
      if ($not_allowed)
         {
            return 404 "Not sure its there";
         }
   }
}
person Tarun Lalwani    schedule 14.09.2017
comment
Спасибо, я попробовал вашу конфигурацию, но она заблокировала доступ пользователей к файлам mp4. Я думаю, это связано с тем, как работают проигрыватели HTML5. Они передают файлы напрямую с обратного прокси-сервера с идентификатором IP-адреса пользователя, а не через домен2, поэтому сервер увидит это как несанкционированный доступ. Я нашел альтернативу, используя Nginx http_secure_link_module, пытаясь реализовать ее. - person David Tran; 15.09.2017