V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
NatsumeMio
V2EX  ›  NGINX

通过 PHP 跳转的文件 开启防盗链后无法被使用

  •  
  •   NatsumeMio · 2021-07-07 20:40:18 +08:00 · 1564 次点击
    这是一个创建于 1239 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有一个网站 https://www.XXXXX.com/index.php/sharingpath/XXXXX.webm 通过这种方法来取的视频文件然后在主站上播放。之后我填入主站域名后开启了 Ngnix 的防盗链,无论在什么地方都是无法拜访,显示我设置的 404 。
    然后我测试 https://www.XXXXX.com/XXXXXXXX/XXXXX.webm 如果是实际路径里的文件都能正常的的在主站上拜访,也能达成防盗链的效果。
    如果我想让第一个接口在开启防盗链的情况下正常使用,应该做些什么更改?请各位熟悉 Ngnix 和 php 大神能给一个解决思路吗,十分感谢。
    5 条回复    2021-07-08 18:56:33 +08:00
    learningman
        1
    learningman  
       2021-07-07 20:44:52 +08:00
    这个“开启了”就很精髓
    nginx 好像没有一个开关叫做防盗链吧~ 你把他加上的规则搞清楚事情也就解决了
    NatsumeMio
        2
    NatsumeMio  
    OP
       2021-07-07 20:57:07 +08:00
    说习惯了
    location ~ .*\.(jpg|jpeg|gif|png|js|css|webm)$
    {
    expires 30d;
    access_log /dev/null;
    valid_referers image.xxxxx.top www.xxxxxxx.com;
    if ($invalid_referer){
    return 404;
    }
    }
    就是加入这段到了配置文件~
    NatsumeMio
        3
    NatsumeMio  
    OP
       2021-07-07 20:57:42 +08:00
    @learningman
    说习惯了
    location ~ .*\.(jpg|jpeg|gif|png|js|css|webm)$
    {
    expires 30d;
    access_log /dev/null;
    valid_referers xxxxxx xxxxxxx;
    if ($invalid_referer){
    return 404;
    }
    }
    就是加入这段到了配置文件~
    ashine
        4
    ashine  
       2021-07-08 00:08:03 +08:00
    HTTP 跳转不管是 301 302 请求头都是不带 Referer 的
    如果一定要跳转,建议换一种防盗链的方式,
    比如 PHP 先验证 Token 然后 X-SendFIle 给 Nginx 处理
    NatsumeMio
        5
    NatsumeMio  
    OP
       2021-07-08 18:56:33 +08:00 via iPhone
    @ashine 十分感谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2475 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:01 · PVG 00:01 · LAX 08:01 · JFK 11:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.