• Nginx + Tomcat 搭建负载均衡、动态分离



    一、Nginx负载均衡实现原理

    Nginx实现负载均衡是通过反向代理实现

    • Nginx服务器作为前端,Tomcat服务器作为后端,Web页面请求由Nginx服务来进行转发
    • 但是不是把所有的Web请求转发,而是将静态页面请求Nginx服务器自己来处理,动态页面请求,转发给后端的Tomcat服务器来处理
    • Tomcat是属于轻量级的应用服务器,可以接受访问量可能会不足,所以我们需要多台Tmocat服务器,然后通过Nginx配置权重来进行挑选Tomcat服务器去进行处理,负载均衡的一种策略

    1.反向代理原理

    • 反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Intetnet上请求连接的客户端,此时代理服务器对外就表现为一个服务器
    • 通常的代理服务器,只用于代理内部网络对Intetnet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。

    1.1Nginx配置反向代理的主要参数

    upstream 服务池名{}
    
    • 1

    配置后端服务器池,以提供响应数据

    proxy_pass http://服务池名
    
    • 1

    配置将访问请求转发给后端服务器池的服务器处理

    2.Nginx静态处理优势

    • Nginx处理静态页面的效率远高于Tomcat的处理能力
    • 若Tomcat的请求量为1000次,则Nginx的请求量为6000次
    • Tomcat每秒的吞吐量为0.6M,Nginx的每秒吞吐量为3.6M
    • Nginx处理静态资源的能力是Tomcat处理的6倍

    3.Nginx动静分离原理

    服务端收到客户端的请求中,既有静态资源也有动态资源,静态资源由Nginx提供服务,动态资源Nginx转发至后端
    在这里插入图片描述

    二、Nginx + Tomcat负载均衡、动静分离实验

    1.环境准备

    一台Nginx服务器,两台Tomcat服务器
    Nginx:192.168.226.132
    Tomcat1:192.168.226.133
    Tomcat2:192.168.226.134
    Nginx部署和Tomcat部署可以参照小编的前面两篇博客
    Nginx网站服务
    Tomcat部署及优化

    2.动静分离配置

    2.1Tomcat1配置

    Tomcat1 server配置

    创建动态页面文件

    mkdir /usr/local/tomcat/webapps/ngs
    vim /usr/local/tomcat/webapps/ngs/index.jsp
    
    • 1
    • 2

    添加以下内容

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <html>
    <head>
    <title>JSP ngs page</title>
    </head>
    <body>
    <% out.println("动态页面 1,http://www.ngs.com");%>
    </body>
    </html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    Tomat1 添加虚拟主机配置
    vim /usr/local/tomcat/conf/server.xml
    
    • 1

    添加以下内容

    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
            <Context docBase="/usr/local/tomcat/webapps/ngs" path="" reloadable="true" />
    </Host>
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    启动服务

    startup.sh    开启服务
    
    • 1

    在这里插入图片描述

    2.2 Tomcat2配置

    Tomcat2 server配置

    创建动态页面文件

    mkdir /usr/local/tomcat/webapps/ngs
    vim /usr/local/tomcat/webapps/ngs/index.jsp
    
    • 1
    • 2

    添加以下内容

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <html>
    <head>
    <title>JSP ngs2 page</title>
    </head>
    <body>
    <% out.println("动态页面 2,http://www.ngs2.com");%>
    </body>
    </html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    Tomat2 添加虚拟主机配置
    vim /usr/local/tomcat/conf/server.xml
    
    • 1

    添加以下内容

    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
            <Context docBase="/usr/local/tomcat/webapps/ngs" path="" reloadable="true" />
    </Host>
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    2.3 Nginx server 配置

    准备静态页面和静态图片

    echo "

    this is static

    " > /usr/local/nginx/html/index.html
    • 1

    在这里插入图片描述
    在这里插入图片描述
    修改Nginx配置文件

    vim /usr/local/nginx/conf/nginx.conf
    
    • 1
    #配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大
     upstream tomcat {
            server 192.168.226.133:8080 weight=1;
            server 192.168.226.134:8080 weight=1;
           }
        server {
            listen       80;
            server_name  www.ngs.com;
    
            #配置Nginx处理动态页面请求,将 .jsp 文件请求转发到Tomcat 服务器处理
        location ~ .*\.jsp$ {
            proxy_pass http://tomcat;   
            #设置后端的 Web 服务器可以获取远程客户端的真实IP         #设定后端的Web服务器接收到的请求访问的主机名(域名或IP、端口),默认host的值为proxy_pass指令设置的主机名
            proxy_set_header HOST $host;
            #把$remote_addr赋值给X-Real-IP(自定义),来获取源IP
            proxy_set_header X-Real-IP $remote_addr;
            #在Nginx作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
            #识别图片
            location ~* \.jpg$ {
               root   /usr/local/nginx/html/img;
               expires  1d;
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    在这里插入图片描述

    测试访问

    访问192.168.226.132
    在这里插入图片描述
    访问192.168.226.132/1.jpg
    在这里插入图片描述
    访问192.168.226.132/index.jsp
    测试负载均衡效果,不断刷新浏览器测试

    在这里插入图片描述
    在这里插入图片描述
    动态页面来回跳转


  • 相关阅读:
    LAMMPS 报错Temperature compute degrees of freedom < 0
    Map和Set知识点
    计算机毕业设计ssm校园快递代取管理系统t914g系统+程序+源码+lw+远程部署
    基于springboot实现漫画网站管理系统项目【项目源码+论文说明】计算机毕业设计
    2022年11月高项案例分析答案解析
    MonkeyRunner自动化测试
    25% 的开发者认为 Rust 是最佳替代,最新 Go 开发者调查报告出炉
    DHorse系列文章之镜像制作
    基于Kubernetes与云原生的存储测试基准CNSBench
    AAPT: error: resource android:attr/lStar not found
  • 原文地址:https://blog.csdn.net/S314118142/article/details/126704253