什么是动静分离?
- 静态资源: 当用户多次访问这个资源,资源的源代码永远不会改变的资源。
- 动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变
- 动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路
- 动静分离简单的概括是:动态文件与静态文件的分离。
- 伪静态:网站如果想被搜索引擎搜素到,动态页面静态技术freemarker等模版引擎技术
为什么要动静分离?
- 在我们的软件开发中,有些请求是需要后台处理的(如:.jsp,.do等等),有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件,否则动态文件。因此我们后台处理忽略静态文件。这会有人又说那我后台忽略静态文件不就完了吗。当然这是可以的,但是这样后台的请求次数就明显增多了。在我们对资源的响应速度有要求的时候,我们应该使用这种动静分离的策略去解决。
- 动静分离将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。这里我们将静态资源放到nginx中,动态资源转发到tomcat服务器中。
- 因此,动态资源转发到tomcat服务器我们就使用到了前面讲到的反向代理了。
如何实现动静分离?
实现动静分离的方式很多,比如静态资源可以部署到CDN、Nginx等服务器上,动态资源可以部署到Tomcat,weblogic或者websphere上。本次课程只要使用Nginx+Tomcat来实现动静分离。
Nginx与Tomcat部署
Nginx在高并发场景和处理静态资源是非常高性能的,但是在实际项目中除了静态资源还有就是后台业务代码模块,一般后台业务都会被部署在Tomcat,weblogic或者是websphere等web服务器上。那么如何使用Nginx接收用户的请求并把请求转发到后台web服务器?
步骤分析:
1.准备Tomcat环境,并在Tomcat上部署一个web项目
2.准备Nginx环境,使用Nginx接收请求,并把请求分发到Tomat上
在Centos上准备一个Tomcat
1.Tomcat官网地址:https://tomcat.apache.org/ 2.下载tomcat,本次课程使用的是apache-tomcat-8.5.59.tar.gz 3.将tomcat进行解压缩 mkdir web_tomcat tar -zxf apache-tomcat-8.5.59.tar.gz -C /web_tomcat
(1)准备3台tomcat
(2)启动tomcat并访问测试
http://192.168.200.146:8080/demo/getAddress
(3)在Nginx对应的配置文件中添加如下内容:
upstream static { server 192.168.64.133:80; server 192.168.64.134:80; } upstream java { server 192.168.64.136:8080; server 192.168.64.135:8080 } server { listen 80; server_name nginx.proxy.com; location / { root html; index index.html; } location ~* \.(jpg|png|gif)$ { proxy_pass http://static; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; health_check; } location ~ \.jsp { proxy_pass http://java; proxy_set_header Host $http_host; } }