动静分离

1.什么是动静分离

将动态请求和静态请求区分访问

2.为什么要做动静分离

tomcat本身处理静态效率不高,还会带来资源开销.所以使用动静分离,将静态由Nginx处理, 动态由PHP处理或Tomcat处理

3.如何实现动静分离

  • Nginx根据客户端请求的url来判断请求的是否是静态资源,如果请求的url包含jpg、png,则由Nginx处理。
  • 如果请求的url是.php或者.jsp等等,这个时候这个请求是动态的,将转发给tomcat处理
总结来说,Nginx是通过url来区分请求的类型,并转发给不同的服务端

4.单机实现动静分离实战

1.安装
[root@web01 ~]# yum install java tomcat -y
2.初始化环境
[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"%>
    
      
        Nginx+Tomcat
      
      
          <%
            Random rand = new Random();
            out.println("

动态资源

"); out.println(rand.nextInt(99)+100); %>

静态图片

[root@web01 ~]# wget -O /usr/share/tomcat/webapps/ROOT/nginx.png http://nginx.org/nginx.png 3.重启 [root@web01 ~]# systemctl start tomcat 4.配置Nginx [root@web1 conf.d]# cat ds.com.conf server { listen 80; server_name ds.com; location / { proxy_pass http://127.0.0.1:8000; } location ~* \.(png|jpg) { root /images; } }

5.集群实现动静分离

负载均衡服务器
[root@lb01 conf.d]# cat ds.com.conf 
upstream java {
    server 172.16.1.7;
}
upstream static {
    server 172.16.1.8;
}

server {
    listen 80;
    server_name ds.com;

    location / {
        proxy_pass http://java;
        include proxy_params;
}

    location ~* \.(png|jpg)$ {
        proxy_pass http://static;
        include proxy_params;
}
}

web01动态资源服务器
[root@web1 conf.d]# cat ds.com.conf 
server {
    listen 80;
    server_name ds.com;


    location / {
        proxy_pass http://127.0.0.1:8080;
}
}

web02静态资源服务器
[root@web02 conf.d]# cat ds.com.conf 
server {
    listen 80;
    server_name ds.com;
    
    location ~* \.(png|gif|jpg|mp4)$ {
                root /images;
                expires 1d;
}
}

你可能感兴趣的:(动静分离)