05Nginx动静分离、 URLRewrite

目录

Nginx动静分离

动态资源 与 静态资源 请求

使用动静分离的场景

动静分离原理

Nginx动静分离配置 

 两种方式:

动态资源代理

静态资源代理

案例1: 

案例2:  

location的匹配规则

location 前缀

location匹配顺序

案例: 正则匹配方法

URLRewrite

URLRewrite的功能

URLRewrite效果

rewrite语法格式及参数语法:

语法:

理解:

flag标记说明:

redirect 和 perement 的区别

不带参数的

匹配所有的数字 

负载均衡+URLRewrite

网关        应用服务器开启防火墙        配置指定端口和ip访问

在网关上配置URLRewrite 


Nginx动静分离

Nginx的并发能力公式:

worker_processes * worker_connections / 4|2 = Nginx最终的并发能力 

动态资源需要 /4,静态资源需要 /2.

Nginx通过动静分离,来提升Nginx的并发能力,更快的给用户响应。

动态资源 与 静态资源 请求

使用动静分离的场景

        nginx 的动静分离是常用的一种功能,这个功能一般比较适合中小型的网站,大型网站一般来说就不适用。
        它为什么只适合中小型网站呢?中小型网站的并发量并不是特别高,需要分离出来的静态资源不是特别多。那么需要把这些静态资源,挪到前置的 nginx 服务器里,如果大型系统的话,那文件就太多了。
        比如说淘宝,你用户上传的文件就非常非常的多,买家秀卖家秀,商户上传这些商品详情页里边的一些介绍,这些图片,这些都属于是静态资源,这就非常多,它就不适合动静分离这种简单的技术架构。

        动静分离比较适合初创的企业,网站的H5的 内嵌到 App 里展示,或者是一些网站的展示,这些都是没有问题的。包括这个 ERP 系统,传统的这种项目也可以使用动静分离,动静分离能够给我们起到这个系统加速的作用。

动静分离原理

    我们的 tomcat 主要应该负责的功能和任务? ,就是应该去处理一些动态请求。那我们如果要是能够把动态请求静态请求它给分离开,把 static 目录下  jscss图片把它前置到我们的 nginx 里。反正用户得访问 nginx ,本来他从 tomcat 去取,需要 nginx  去代理。那接下来就甭去代理了,直接放到 nginx 里,把这些静态资源给它挪到前置的 nginx 里,这就叫动静分离了。然后把这些动态的请求给它打到我们后端这个 tomcat 上,这就是动静分离的基本的原理

Nginx动静分离配置 

 两种方式:

一:  是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案

二:就是动态跟静态文件混合在一起发布,通过nginx来分开。

动态资源代理

#配置如下
location / {
        proxy_pass 路径;
}

静态资源代理

#配置如下
location /{
    root静态资源路径;
    index默认访问路径下的什么资源;
    autoindex on;#表示展示静态资源全的全部内容,以列表的形式展开。
}

案例1: 

案例2:  

location的匹配规则

        使用正则

location 前缀

  • / 通用匹配,任何请求都会匹配到。
  • = 精准匹配,不是以指定模式开头
  • ~ 正则匹配,区分大小写
  • ~* 正则匹配,不区分大小写
  • ^~ 非正则匹配,匹配以指定模式开头的location

location匹配顺序

  • 多个正则location直接按书写顺序匹配,成功后就不会继续往后面匹配
  • 普通(非正则)location会一直往下,直到找到匹配度最高的(最大前缀匹配)
  • 当普通location与正则location同时存在,如果正则匹配成功,则不会再执行普通匹配
  • 所有类型location存在时,“=”匹配 > “^~”匹配 > 正则匹配 > 普通(最大前缀匹配)

案例: 正则匹配方法

URLRewrite

URLRewrite的功能

        URLRewrite 也是比较实用的一个功能,它能隐藏我们真实的后端服务器的这个物理的地址

URLRewrite效果

http://192.168.116.155/index.jsp?pageNum=2 
伪静态
http://192.168.116.155/2.html

rewrite语法格式及参数语法:

rewrite是实现URL重写的关键指令,根据regex (正则表达式)部分内容,重定向到replacement,结尾是flag标记。

语法:

rewrite          <regex>         <replacement>         [flag];
关键字          正则                 替代内容                 flag标记


关键字:其中关键字不能改变
正则:perl兼容正则表达式语句进行规则匹配
替代内容:将正则匹配的内容替换成replacement
flag标记:rewrite支持的flag标记
rewrite参数的标签段位置:
        server,location,if
 

理解:

rewrite  ^  正则 $  书写转变的地址,真实的地址   转发的形式 (break ,rewrite,last,redirect ,percent )

例子:rewrite ^ /2.html $   /index.jsppageNum=2 break;
URLRewrite 的关键字  rewrite ,后面跟正则表达式,这正则表达式以 ^ 开头,然后以这个$ 结尾里边写正则 后边写上这个我们想要转变的这个地址,这就是原来的这个真实地址

flag标记说明:

  • last         #本条规则匹配完成后,继续向下匹配新的location URI规则
  • break     #本条规则匹配完成即终止,不再匹配后面的任何规则
  • redirect   #返回302临时重定向,浏览器地址会显示跳转后的URL地址
  • permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

redirect 和 perement 的区别

redirect 302  会返回的临时重定向 
perement  301  返回 永久冲定向。
这个 301 和 302 的区别,在我们实际给真实的用户,我们用户去适用的时候其实是没有任何区别的,它都会跳转,然后这个 URL 都会发生变化。这个临时重定向和永久重定向,这是给我们的这个网络爬虫给它来看的。

不带参数的

匹配所有的数字 

负载均衡+URLRewrite

网关
        应用服务器开启防火墙
        配置指定端口和ip访问

开启防火墙
      systemctl start firewalld
重启防火墙
      systemctl restart firewalld
重载规则
      firewall-cmd --reload
查看已配置规则
      firewall-cmd --list-all
指定端口和ip访问
      rich-rule 这是负规则可以定义相对来说比较复杂的规则
      firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.44.101" port protocol="tcp" port="8080" accept
移除规则
      firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source
address="192.168.44.101" port port="8080" protocol="tcp" accept" 

在网关上配置URLRewrite 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gh-xiaohe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值