目录
Nginx动静分离
Nginx的并发能力公式:
worker_processes * worker_connections / 4|2 = Nginx最终的并发能力
动态资源需要 /4,静态资源需要 /2.
Nginx通过动静分离,来提升Nginx的并发能力,更快的给用户响应。
动态资源 与 静态资源 请求
使用动静分离的场景
nginx 的动静分离是常用的一种功能,这个功能一般比较适合中小型的网站,大型网站一般来说就不适用。
它为什么只适合中小型网站呢?中小型网站的并发量并不是特别高,需要分离出来的静态资源不是特别多。那么需要把这些静态资源,挪到前置的 nginx 服务器里,如果大型系统的话,那文件就太多了。
比如说淘宝,你用户上传的文件就非常非常的多,买家秀卖家秀,商户上传这些商品详情页里边的一些介绍,这些图片,这些都属于是静态资源,这就非常多,它就不适合动静分离这种简单的技术架构。动静分离比较适合初创的企业,网站的H5的 内嵌到 App 里展示,或者是一些网站的展示,这些都是没有问题的。包括这个 ERP 系统,传统的这种项目也可以使用动静分离,动静分离能够给我们起到这个系统加速的作用。
动静分离原理
我们的 tomcat 主要应该负责的功能和任务? ,就是应该去处理一些动态请求。那我们如果要是能够把动态请求和静态请求它给分离开,把 static 目录下 js、css 和图片把它前置到我们的 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"