• nginx基础使用二————动静分离、UR Rewrite和防盗链



    前言

    本篇文章的内容学习以及总结本应该是在昨天能完的。哎,奈何昨天本打算接着下载下Keepalived,学学nginx的高可用。本想到在下载Keepalived的时候差点被劝退了。我这用的是Ubuntu系统,可能版本也比较低。编译Keepalived的时候,总显示不能链接openssl库。换了个openssl版本也不行。不清楚下载openssl库的那个依赖的libnssl库为啥链接不到。在网上搜,改了半天多,依旧没成功。哎,自己太菜,没有办法了,只能换个系统重新开始了。于是,租了个云服务器,继续开始nginx的学习之旅。在租的centos8.2版本的云服务器上,轻松就把Keepalived下载上了。在下载Keepalived的时候,根据自己遇到的问题,也学到了,有时间也总结下。在这期间,自己也发现了一个可以自动编译安装Linux上软件的网站,在此先推给大家,可以用用,挺爽的,哈哈哈OneinStack


    一、动静分离

    动静分离介绍

    Nginx动静分离,就是动态请求和静态请求分开,也可以理解成使用Nginx处理静态页面,Tomcat 处理动态页面。将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用服务器的请求。后台应用服务器只负责动态数据请求。

    动静分离从目前实现角度来讲大致分为两种。
    (1)纯粹把静态文件独立成单独的域名,放在独立的服务器上 (主流推崇的方案)
    (2)动态跟静态文件混合在一起发布,通过Nginx来分开

    毕竟凡事都有两面性,动静分离也是如此。如下是动静分离的优缺点:
    优点: 分担负载,减轻web服务器的压力,适用于大负载。静态资源放置cdn,同时还可以通过配置缓存到客户浏览器中,这样极大减轻web服务器的压力。
    缺点: 网络环境不佳时,ajax回应很慢,导致页面出现空白,出错处理会不好看。不利于网站SEO(搜索引擎优化),增加了开发复杂度。

    动静分离目的

    为了加快网站的解析速度,可以把动态页面和静态页面交给不同的服务器来解析,来加快解析速度,提高请求的访问效率,降低原来单个服务器的压力,下面是动静分离的原理图。
    在这里插入图片描述

    动静分离的实现

    通过location指定不同的后缀名实现不同的请求转发,也可以通过expires参数设置,使浏览器缓存文件的过期时间,从而减少与服务器之前的请求和流量。

    Expires具体含义:给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量,也就是所谓的客户端缓存。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用Expires来缓存),假设一下,把这个Expires设置3d,表示在3天之内访问这个 URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,如果有修改,则直接从服务器重新下载,返回状态码 200。

    如下配置:
    配置image、js、css等资源文件的路径和地址。然后设置缓存失效的时间。

    #拦截静态资源
    location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ {
    	root static;
    	expires      30d; 
    	}
    

    完整的nginx.conf配置如下:

    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
    
    http {
    
       server {
           listen       80;
           server_name  localhost;
          
          #拦截后台请求
          location / {
            proxy_pass http://localhost:81;
            proxy_set_header X-Real-IP $remote_addr;
          }
    
          #拦截静态资源
          location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ {
            root static;
            expires      30d;  
           }
    
        }
    }
    

    二、UR Rewrite

    UR Rewrite介绍

    三、防盗链

    防盗链介绍

    防盗链, 简单地说,就是某些不法网站未经许可,通过在其自身网站程序里非法调用其他网站的资源,然后在自己的网站上显示这些调用的资源,达到填充自身网站的效果。这一举动不仅浪费了调用资源网站的网络流量,还造成其他网站的带宽及服务压力吃紧,甚至宕机。
    说白了,其实防盗链其实就是指定你的资源,可以通过那些服务器来被访问

    防盗链的配置

    首先在没有配置防盗链的情况下,location可以写成如下:

    location ~* .*\.(gif|jpg|ico|png|css|svg|js)$ {
    			root /usr/local/nginx/static;
    }
    

    加上防盗链设置后如下:

    location ~* .*\.(gif|jpg|ico|png|css|svg|js)$ {
    		root /usr/local/nginx/static;
    		valid_referers none blocked  *.liuheming.com ;
    		if ($invalid_referer) {
    			return 403;
    			break;
    		 }
    		 access_log off;
    	}
    

    valid_referers none blocked *.liuheming.com ; 其实就是白名单,允许文件链出的域名白名单

    这样设置差不多就可以起到防盗链作用了,但其实,这样并不是彻底地实现真正意义上的防盗链!
    valid_referers none blocked *.liuheming.com ;中
    valid_referers 里多了“none blocked”
    把“none blocked”删掉,改成
    valid_referers *.liuheming.com

    nginx彻底地实现真正意义上的防盗链完整的代码应该是这样的:

    location ~* .*\.(gif|jpg|ico|png|css|svg|js)$ {
    		root /usr/local/nginx/static;
    		valid_referers   *.liuheming.com ;
    		if ($invalid_referer) {
    			return 403;
    			break;
    		 }
    		 access_log off;
    	}
    

    这样在浏览器直接输入图片地址就不会再显示图片出来了,也不可能会再右键另存什么的。

    防盗链的基本命令

    valid_referers none | blocked | server_names | strings ....;
    

    none, 检测 Referer 头域不存在的情况。

    blocked,检测 Referer 头域的值被防火墙或者代理服务器删除或伪装的情况。这种情况该头域的值不以
    “http://” 或 “https://” 开头。

    server_names ,设置一个或多个 URL ,检测 Referer 头域的值是否是这些 URL 中的某一个。

    推荐一个零声学院免费公开课程,个人觉得老师讲得不错,
    分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,
    fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
    TCP/IP,协程,DPDK等技术内容,点击立即学习:服务器课程

  • 相关阅读:
    基于SpringBoot的精准扶贫管理系统
    【CHI】Transaction structure
    【Autopsy数字取证篇】Autopsy案例创建与镜像分析详细教程
    TDesign设计系统全方位解析
    对一个即将上线的网站,如何做一个较完整的Web应用/网站测试?
    web安全-原发抗抵赖
    环境响应性介孔二氧化硅复合微球/二氧化硅层状双氢氧化物微球的相关制备
    SpringBoot 接收xml数据
    promise.catch和promise.then后的then是否会执行
    上周热点回顾(9.12-9.18)
  • 原文地址:https://blog.csdn.net/weixin_52259848/article/details/127042387