应用场景:图片等资源须要设置权限。如:仅仅有认证过的用户才干訪问自己的图片。

解决的方法:使用Nginx的防盗链模块http_secure_link能够实现,该模块默认情况下不包括。故在安装时要加上--with-http_secure_link_module

该模块依据两个參数控制权限訪问,一个是过期时间(即该链接在这个时间之前可訪问。过期后无法訪问)。该參数主要出于安全考虑。

还有一个是通过md5算法算出来的KEY,一般通过uri计算

举例:

    server {listen       80;server_name  192.168.1.22;root /home/search/upload/portal_upload/user;location / {index  index.html index.htm;}location /img/dossier/ {secure_link $arg_st,$arg_e;secure_link_md5 guahao@345$uri$arg_e;if ($secure_link = "") {return 403;}if ($secure_link = "0") {return 403;}rewrite ^/img/dossier/(.*)$ /img/dossier/$1 break;}
}

上面的secure_link定义了控制权限的两个參数(各自是st, e)

当中e就是上述的过期时间,建议e = 当前时间 + 有效期限(5分钟)
比如:
e = date +%s -d "December 22, 2014 12:22:03"
   = 1419222123
st的计算公式例如以下:md5(PKEY,uri,e)。当中PKEY是自己定义的常量

比如:
st = php -r 'print str_replace("=", "",strtr(base64_encode(md5("guahao@345/img/dossier/16/641fd565-ec87-4cbe-b4ae-7eedba41bb0e.jpg1419222123",TRUE)),"+/","-_")) . "\n";'

=13c9kZrZT1qnNgpG4Vtksw

效果例如以下:

http://192.168.1.22/img/dossier/16/641fd565-ec87-4cbe-b4ae-7eedba41bb0e.jpg  --不可訪问
http://192.168.1.22/img/dossier/16/641fd565-ec87-4cbe-b4ae-7eedba41bb0e.jpg?st=13c9kZrZT1qnNgpG4Vtksw&e=1419222123  --过期前可訪问。过期后不可訪问
http://192.168.1.22/img/headpic/13/13_140x140.jpg   --不在dossier以下的图片没有訪问限制

OK,到此为此我们基本实现的基于应用的权限控制,且方法灵活。由于e和st的生成由应用程序来控制,能进行随意的改动和变动,而架构不受影响。

转载于:https://www.cnblogs.com/ldxsuanfa/p/10860185.html

[Nginx]用Nginx实现与应用结合的訪问控制 - 防盗链相关推荐

  1. 九爷 带你了解 nginx优化与防盗链

    Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine X",是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP  ...

  2. 【Nginx】Nginx实现图片防盗链

    目录 Nginx有三种方法可以进行防盗链 1.对Nginx下所有项目的指定资源不同文件类型进行防盗链 2.对指定目录或者指定项目目录进行防盗链 3.nginx 的第三方模块ngx_http_acces ...

  3. Nginx配置文件nginx.conf中文详解(转)

    ######Nginx配置文件nginx.conf中文详解######定义Nginx运行的用户和用户组 user www www;#nginx进程数,建议设置为等于CPU总核心数. worker_pr ...

  4. Nginx防盗链,Nginx访问控制, Nginx解析php相关配置, Nginx代理

    2019独角兽企业重金招聘Python工程师标准>>> Nginx防盗链 Nginx防盗链配置需要与不记录日志和过期时间结合在一起,因为都用到了location. 打开配置文件,注释 ...

  5. Nginx+keepalived 实现高可用,防盗链及动静分离配置

    一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...

  6. Announcing the Updated NGINX and NGINX Plus Plug‑In for New Relic (Version 2)

    In March, 2013 we released the first version of the "nginx web server" plug‑in for New Rel ...

  7. nginx rewrite重写与防盗链配置

    nginx rewrite重写规则与防盗链配置方法 时间:2016-02-04 15:16:58来源:网络 导读:nginx rewrite重写规则与防盗链配置方法,rewrite规则格式中flag标 ...

  8. nginx的配置和优化(隐藏版本号、gzip、expires、防盗链......等)

    Nginx配置和优化 1.隐藏版本号 默认情况下,使用curl命令会把nginx的版本信息等获取到,如: [root@transit_machine ~]# curl -I -H"www.b ...

  9. Nginx使用http_accesskey_module防盗链,告别referer,告别伪装

    Nginx使用http_accesskey_module防盗链,告别referer,告别伪装 传统的防盗链很多是依赖referer,比如apache的rewrite模块,根据规则判断referer,这 ...

最新文章

  1. 2021河南省高考文科成绩排名查询,2021年河南高考成绩排名及一分一段表
  2. ReentrantLock和Condition理解及应用
  3. Android2.3解析json出错
  4. 计算机科普知识小动画,4岁嗯哼知识量惊呆杜江!这4部科普启蒙动画,孩子绝对不能错过...
  5. CentOS 5 下yum安装 Mono 2.4
  6. Azkaban-two_server模式-job任务运行
  7. λ表达式_Java 8新特性:学习如何使用Lambda表达式,一看必懂
  8. ios给系统添加分类管理属性
  9. javaweb中mysql数据库的回滚操作代码
  10. 【库安装】windows下Python安装protobuf
  11. 关于sql中字符串的疑惑
  12. Gridview用法大总结
  13. 自学Android到什么程度才能找到工作?
  14. auto.js下载安装教程
  15. AD20导出Gerber教程
  16. 【洛谷】P1359 租用游艇
  17. Win10切换Administrator账户
  18. Spark面试精选题(05)
  19. 解决spring boot 报错问题:Disconnected from the target VM, address: ‘127.0.0.1:51596
  20. MATLAB中classify函数的使用

热门文章

  1. LeetCode Algorithm 70. 爬楼梯
  2. 1.1 编程语言介绍
  3. Jenkins 权限配置与集群配置
  4. LDC1000学习资料
  5. 2017年第八届蓝桥杯C/C++ B组国赛 —— 第三题:希尔伯特曲线
  6. 大数据WEB阶段Spring框架(三)声明式事务处理
  7. 计算机视觉之OpenCV教程 ---Mat类基础(一)
  8. 【面试题】 迅雷2014校园招聘笔试题
  9. 语言学概论ppt课件_精益生产管理培训PPT课件-精益生产管理概论
  10. python numpy库安装 mac_教程|如何在mac上为Python安装XGBoost!