1.为什么要实现动静分离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来区分请求的类型,转发给不同的服务器。动态资源和静态资源分离,使服务器结构更加清晰。2、为什么要用nginx传统的web项目,并发量小,用户用的少,所以在并发不高的情况下,用户可以直接访问tomcat服务器,然后tomcat服务器返回消息给用户,如图下图中:我们当然知道,为了解决高并发,我们可以使用负载均衡,也就是我们多加几台tomcat服务器,当用户访问时,可以将请求提交到空闲的tomcat服务器上。总结起来就是:1、Nginx通过反向代理实现负载均衡。当网站访问量达到一定程度,单台服务器无法满足用户请求时,就需要多台服务器集群来使用nginx作为反向代理。并且多台服务器可以平均分担负载,不会出现某台服务器负载过高导致某台服务器空闲的情况。2、nginx配置反向代理的主要参数(1)upstream服务池名称{}配置后端服务器池提供响应数据(2)proxy_passhttp://服务池名称配置将访问请求转发到后端服务器池2.1Nginx静态处理优势Nginx的静态页面处理效率远高于Tomcat的处理能力;如果Tomcat的请求量是1000次,Nginx的请求量是6000次;Tomcat的每秒吞吐量为0.6M,Nginx的每秒吞吐量为3.6M;Nginx处理静态资源的能力是Tomcat的6倍。3、Nginx动静分离的实现原理如下图所示。我们部署了nginx和tomcat服务器,将所有静态资源放在nginx的webroot目录下,动态请求程序放在tomcat的webroot目录下。客户端访问服务器时,如果是静态资源请求,会直接去nginx的webroot目录下获取资源。如果是对动态资源的请求,nginx利用反向代理的原理将请求转发给tomcat进行处理,从而实现了动静资源的分离,提高了服务器处理请求的性能。
