Nginx动静分离-day08

1.动静分离的基本介绍
2.动静分离的实现
3.实现 Nginx + uwsgi + Python 的部署

一、动静分离的基本介绍

1.什么是动静分离
简单来说就是将动态请求和静态请求分开处理。

2.为什么要做动静分离
Tomcat (java webserver) 在处理静态资源时效率不高,但默认情况下所有资源都由tomca来处理,需要进行复杂的逻辑运算,从而导致应用响应慢,并且会占用不必要的系统资源。
实现动态和静态请求分离后,可以减少系统不必要的耗时啝延时,以便加快系统的处理性能。

3.如何实现动静分离
Nginx通过用户请求的uri来区分请求的类型,并转发给不同的服务端。

二、动静分离的实现(负载均衡做判断)

Nginx+Tomcat(处理解析Java代码)
tomcat默认端口是:8080

  • 将动态处理和静态处理在两个服务器上实现
    负载均衡+web01(动态)+web02(静态)

注意:权限问题,要授予资源目录权限

1.先配置web01

#1.安装Java
[root@web01 ~]# yum install java -y
#2.下载Tomcat(二进制安装,版本高)
[root@web01 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.34/bin/apache-tomcat-9.0.34.tar.gz

#3.安装Tomcat
[root@web01 ~]# mkdir /soft
[root@web01 ~]# tar xf  apache-tomcat-9.0.34.tar.gz -C /soft/
[root@web01 ~]# ln -s /soft/apache-tomcat-9.0.34/ /soft/tomcat    #做一个软连接,方便以后升级卷

#4.启动Tomcat,(停止是shutdown.sh)
[root@web01 ~]# /soft/tomcat/bin/startup.sh

#5.配置动态资源
[root@web01 ~]# cat /soft/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); %>

静态图片

2.在配置web02

#1.配置Nginx
[root@web01 ~]# cat /etc/nginx/conf.d/ds.conf
server {
      listen 80;
      server_name 域名;
      root /code/images;

      location / {
            index index.html;
      }  
}
#2.创建存放静态资源的目录,并放置静态资源
[root@web01 ~]# mkdir -p /code/images

#3.启动Nginx

3.最后配置负载均衡

[root@lb01 ~]# cat /etc/nginx/conf.d/proxy_ds.conf
upstream java {
      server 172.16.1.7:8080;
}
upstream static {
      server 172.16.1.8:80;
}

server {
      listen 80;
      server_name 域名;
      
      location / {
            proxy_pass http://java;
            include proxy_params;
      }
      location ~* \.(jpg|png|gif)$ {      #不区分大小写的匹配,从而实现动静分离
      proxy_pass http://static;
      include proxy_params;
      expire 30d;    # 缓存30天,加快下次访问速度
      }
}

三、实现 Nginx + uwsgi + Python 的部署

1.wsgi 和 uwsgi

wsgi:就像一座桥梁,一边连接着web服务器,另一边连接着web应用程序。(通用接口)

uwsgi:实现了wsgi、uwsgi、等数据交换协议。

通常情况下Python中的Djano框架 或 Flask框架可以通过Uwsgi方式对外提供服务,但是为了 安全 和 高效,所以就需要Nginx

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