• nginx之rewrite及防盗链


    rewrite示例-自动跳转https

    示例1:自动把首页的http转化成https
    location / {
           root /data/nginx/pc/html;
           index index.html;
           if ( $scheme = http ) {
               rewrite / https://www.xxxpc.net/;    
           }
       }
    当你访问网站首页时,进行判断;当协议是http时,则进行rewrite重写把http://www.xxxpc.net重写成https://www.xxxpc.net;rewrite必须写在判断里面,如果不加判断条件,把http转化成https之后,还会继续循环,继续把https还转换至https;如此循环10次,直到浏览器显示重定向过多,进行报错为止
    
    示例2:当进入登录界面时,自动跳转为https
    location /login {
           root /data/nginx/pc/html;
           index index.html;
           if ( $scheme = http ) {
               rewrite / https://www.xxxpc.net/login permanent;
           }
           auth_basic "input password";
           auth_basic_user_file /apps/nginx/conf/.htpasswd;
       }
    必须先把http转换成https之后,才可以出现登录界面,这样输入的用户名和密码才是加密的;判断必须在认证用户名密码之前进行判断重写
    

    rewrite判断文件是否存在

    location / {
           root /data/nginx/pc/html;
           index index.html;
           if ( !-f $request_filename ) {
               rewrite (.*) http://www.xxxpc.net/index.html;
           }
       }
    当访问网站/下的资源时先做判断,如果访问/下的资源不存在,则自动重写到网站的首页
    

    Nginx防盗链

    防盗链基于客户端携带的referer实现,referer是记录打开一个页面之前记录是从哪个页面跳转过来的标记信息,如果别人只链接了自己网站图片或某个单独的资源,而不是打开了网站的整个页面,这就是盗链,referer就是之前的那个网站域名,正常的referer信息有以下几种:
    
    none:请求报文首部没有referer首部,比如用户直接在浏览器输入域名访问web网站,就没有referer信息。
    blocked:请求报文有referer首部,但无有效值,比如为空。
    server_names:referer首部中包含本主机名及即nginx监听的server_name。
    arbitrary_string:自定义指定字符串,但可使用*作通配符。
    regular expression:被指定的正则表达式模式匹配到的字符串,要使用~开头,例如:~.*.magedu.com。
    
    基于访问安全考虑,nginx支持通过ungx_http_referer_module模块检查访问请求的referer信息是否有效实现防盗链功能
    location /images {
           root /data/nginx/pc;
           valid_referers none blocked server_names ~.google. *.baidu.com *.biying.com;  #当访问/images下的资源时,只有指定的这些才可以访问
           if ( $invalid_referer ) {     #如果访问资源的网站不是从上面指定的搜索引擎跳转过来的,则拒绝访问,并且返回状态码403
               return 403;
           }
       }
    盗链是被人网站的资源不是指定的他本地资源,而是指定的是其他人网站的链接,占用别人的存储和带宽为自己办事;通过referer来判断,referer是指从哪个网站跳转过来的;如果是百度的话,说明他是百度搜索本域名过来,是合法的;如果没有referer信息,说明他是用浏览器输入域名访问的,也是合法的;如果是从一个未知的网站跳转过来的,就说明是盗链资源,可以通过referer信息判断,然后再进行相关的配置操作。
    防盗链一般用于/images(存放图片)和/static(存放静态资源)这两个location中。
  • 相关阅读:
    献给需要购买 阿里云产品的朋友
    当硬件没问题的时候,提升电脑运行速度
    IIS网页GZIP压缩
    前端优化-如何计算白屏和首屏时间
    Javascript 思维导图
    总结get和post区别---面试用
    点击切换样式、以及点击自身移除样式效果
    各行换色
    计算器
    无缝轮播图
  • 原文地址:https://www.cnblogs.com/dongzhanyi123/p/12081477.html
Copyright © 2020-2023  润新知