nginx中,假设文件的真实地址泄露了,是否有方法可以对直接访问真实地址进行控制呢?
例如:输入http://www.qq.com/qq.rar,以这种方式访问文件的话,能否先判断访问者的权限再判断是否让下载呢?

解决方案 »

  1.   

    Nginx防盗链详细设置
    http://www.inginx.com/nginx-referer-configure/
      

  2.   

    比较简单的方式是检测http包中的refer,如果refer不来自本站点,就返回403,上面的朋友应该是那个方法。但是比较容易造假包,也可以在程序中检测用户身份,不过需要额外的编码。
      

  3.   

    防盗链并不能满足我的需求。防盗链不能对直接在浏览器输入真实地址进行控制吧?例如:我有一个文件qq.rar,放在www.1.com的download目录下。别人要是知道了这个存放路劲(先别管怎么知道的),那么直接在浏览器里面输入:http://www.1.com/download/qq.rar就可以进行下载了,防盗链是起不了作用的。
      

  4.   

    防盗链一般都在服务层,怎么不起作用呢?只要是http访问,不管用什么软件,总要经服务器的http服务吧?
    如果连http服务都绕开了,已经是黑客行为了如果实测不起作用,只能说防盗链的判断没写好
      

  5.   

    能否先判断访问者的权限再判断是否让下载呢?
    那你就只能通过帐号和目录权限的方式来限制了.简单一点 直接FTP协议 
      

  6.   


    这样你看行不行?
    对所有的下载文件设一个目录,
    设置一个文件down.php?id=XXXXX,
    然后在这个文件里面输出要被下载的文件.
    文件所在的目录名字每天换一次.这样即使被记录了,那也就是一天呀...
      

  7.   

    apache  auth_mysql 模块
    对下载目录进行控制
      

  8.   


    按照1楼的帖子设置之后,确实可以使用在浏览器输入真实地址的方式访问。但是如果自己新建一个HTML,在里面写一个链接到该真实地址的话,防盗链就起作用了。因此,我并不是说防盗链不行,而是不符合我的需求。另外,我已经自行解决了这个问题了,感谢各位的热心回答。用的是nginx的rewrite把文件存放的真实地址跳转到我指定的php,然后进行处理。如此的话就无法通过直接输入地址的方式访问了。