文章目录
一、为什么要实现动静分离
1.1 什么是动静分离?
将动态请求和静态请求区分访问,
1.2 为什么要做动静分离?
静态由Nginx处理, 动态由PHP处理或Tomcat处理…
因为Tomcat程序本身是用来处理jsp代码的,但tomcat也能处理静态资源.
tomcat本身处理静态效率不高,还会带来资源开销.
1.3 如何实现动静分离?
Nginx根据客户端请求的url来判断请求的是否是静态资源,如果请求的url包含jpg、png,则由Nginx处理。
如果请求的url是.php或者.jsp等等,这个时候这个请求是动态的,将转发给tomcat处理。
总结来说,Nginx是通过url来区分请求的类型,并转发给不同的服务端。
动态资源和静态资源分开,使服务器结构更清晰。
二、为什么使用nginx?
在传统的web项目中,并发量小,用户使用的少,所以在低并发的情况下,用户可以直接访问tomcat服务器,然后tomcat服务器返回消息给用户,理解如下图:
当然我们知道,为了解决高并发,可以使用负载均衡,也就是我们多增加几个tomcat服务器,当用户访问的时候,请求可以提交到空闲的tomcat服务器上
总结就是:
1.Nginx实现负载均衡是通过反向代理实现、
当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
2.Nginx配置反向代理的主要参数
(1)upstream 服务池名{}
配置后端服务器池,以提供响应数据
(2)proxy_pass http://服务池名
配置将访问请求转发给后端服务器池的服务器处理
2.1 Nginx静态处理优势
- Nginx处理静态页面的效率远高于Tomcat的处理能力;
- 若Tomcat的请求量为1000次,则Nginx的请求量为6000次;
- Tomcat每秒的吞吐量为0.6M,Nginx的每秒吞吐量为3.6M;
- Nginx处理静态资源的能力是Tomcat处理的6倍。
三、Nginx动静分离实现原理
- 如下图所示,我们部署了 nginx 和 tomcat服务器,把所有的静态资源都放置在nginx的webroot目录下面,把动态请求的程序都放在 tomcat 的webroot目录下面。
- 当客户端访问服务端的时候,如果是静态资源的请求,就直接到nginx的webroot目录下面获取资源。