【问题标题】:Allow access from one domain with NGINX允许使用 NGINX 从一个域访问
【发布时间】:2017-09-16 20:51:11
【问题描述】:

我正在寻找一种解决方案来防止与 NGINX for JWPlayer 进行热链接。假设我在http://mydomain1.com 有一个配置为反向代理的 NGINX 服务器,我将获取 URL http://mydomain1.com/file.mp4 放在我的网站上,该网站托管在 http://mydomain2.com 的另一个 VPS 上。如何限制文件,使其只能在 http://mydomain2.com 上播放,而不能在其他地方播放?

我尝试了allow & deny 指令,但后来我意识到这是一个 HTML5 流,因此指令会阻止流向用户。

【问题讨论】:

  • 所以你想让浏览器说 mydomain2.com 然后只允许访问?
  • 对不起,我没有说清楚。我希望我从 domain1(这是一个反向代理)获得的链接只能使用 html5 播放器在 domain2(不同主机上的两个域)上播放。有没有办法为此目的配置 NGINX?我也尝试了 valid_referers 指令,但它不起作用。
  • 如果服务器不同,则需要更改 domain1 nginx 而不是 domain2。您有权访问 domain1 nginx?
  • 是的,我可以访问两台服务器,而且它们都在 NGINX 上运行。

标签: nginx html5-video jwplayer nginx-location nginx-reverse-proxy


【解决方案1】:

在 mydomain1.com 的 nginx 上。确保您有一个额外的块来侦听默认主机并拒绝所有流量。然后在现有的监听块中我们添加一个规则,只允许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";
         }
   }
}

【讨论】:

  • 谢谢,我试过你的配置,但是它阻止了用户访问 mp4 文件。我认为这是由于 HTML5 播放器的工作方式。他们直接从反向代理“流式传输”文件,而不是通过域 2 使用用户 IP 的身份,因此服务器会将其视为未经授权的访问。我找到了一个使用 Nginx http_secure_link_module 的替代方案,试图实现它。
【解决方案2】:

因为 mp4 url​​ 将被放入 HTML5 播放器中,这意味着远程地址(用户的机器)将始终与反向代理直接通信。因此,除了 nginx 安全链接模块之外,使用其他方法限制访问是不可能的。有了这个模块,我现在可以根据用户的 ip、过期时间、url 和密码来限制访问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 2015-12-30
    相关资源
    最近更新 更多