动静分离实践

1.什么是动静分离?
	将动态请求和静态请求区分访问, 

2.为什么要做动静分离?
	静态由Nginx处理, 动态由PHP处理或Tomcat处理....
	因为Tomcat程序本身是用来处理jsp代码的,但tomcat也能处理静态资源.
	tomcat本身处理静态效率不高,还会带来资源开销.
3.如何实现动静分离?

Nginx根据客户端请求的url来判断请求的是否是静态资源,如果请求的url包含jpg、png,则由Nginx处理。
如果请求的url是.php或者.jsp等等,这个时候这个请求是动态的,将转发给tomcat处理。

总结来说,Nginx是通过url来区分请求的类型,并转发给不同的服务端。


4.单机实现动静分离实战
	[root@web01 ~]# yum install java tomcat -y
	[root@web01 ~]# mkdir /usr/share/tomcat/webapps/ROOT		-->主要站点根目录
	[root@web01 ~]# vi /usr/share/tomcat/webapps/ROOT/index.jsp
	<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
	<html>
	  <head>
		<title>Nginx+Tomcat</title>
	  </head>
	  <body>
		  <%
			Random rand = new Random();
			out.println("<h2>动态资源</h2>");
			out.println(rand.nextInt(99)+100);
		%>
		<h2>静态图片</h2>
		<img src="nginx.png" />
	  </body>
	</html>
[root@web01 ~]# wget -O /usr/share/tomcat/webapps/ROOT/nginx.png http://nginx.org/nginx.png
[root@web01 ~]# systemctl start tomcat

   tomcat监听在8080端口上:
   

#配置Nginx 
[root@web01 conf.d]# cat ds.oldxu.com.conf 
server {
	listen 80;
	server_name ds.oldxu.com;

	location / {
		proxy_pass http://127.0.0.1:8080;
	}
	location ~* \.(png|gif|jpg|mp4)$ {
		root /images;
		expires 1d;
	}
}


5.集群实现动静分离实战
[root@lb01 conf.d]# cat  proxy_ds.oldxu.com.conf

upstream java {
	server 172.16.1.7:8080;
} 
upstream static {
	server 172.16.1.8:80;
}
server {
	listen 80;
	server_name ds.oldxu.com;
	location / {
		proxy_pass http://java;
		include proxy_params;
	}

	location ~* \.(png|gif|jpeg)$ {
		proxy_pass http://static;
		expires 2d;
		include proxy_params;
	}
}

posted @   老王教你学Linux  阅读(117)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示