Nginx+Tomcat实现动静分离和负载均衡

tech2026-06-18  1

文章目录

一、Nginx应用二、Nginx负载均衡实现原理三、Nginx动静分离实现原理3.1动静分离原理3.2nginx静态处理优势 四、Nginx+Tomcat负载均衡、动静分离实验4.1两台Tomcat服务器节点部署4.2Nginx服务部署4.3动静分离实验进阶

一、Nginx应用

●Nginx是一款非常优秀的HTTP服务器软件 支持高达50000个并发连接数的响应 拥有强大的静态资源处理能力 运行稳定 内存、CPU等系统资源消耗非常低 ●目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力

二、Nginx负载均衡实现原理

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

●Nginx配置反向代理的主要参数 upstream 服务池名 { } 配置后端服务器池,以提供响应数据 proxy_pass http://服务池名 配置将访问请求转发给后端服务器池的服务器处理

三、Nginx动静分离实现原理

3.1动静分离原理

●服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由nginx提供服务,动态资源nginx转发至后端

3.2nginx静态处理优势

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

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

案例架构: 本架构同时实现了nginx的负载均衡和动态分离,静态页面由nginx处理,动态页面由nginx进行调度,分配给后端的两台Tomcat网站服务器,权重值为1:1.

4.1两台Tomcat服务器节点部署

1.安装jdk环境

[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# tar zxf jdk-8u91-linux-x64.tar.gz -C /usr/local/ [root@localhost ~]# vim /etc/profile 最后加入如下内容 export JAVA_HOME=/usr/local/jdk1.8.0_91 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=$JAVA_HOME/bin:$PATH [root@localhost ~]# source /etc/profile

2.安装Tomcat软件

[root@localhost ~]# tar zxf apache-tomcat-9.0.16.tar.gz -C /usr/local/ [root@localhost ~]# cd /usr/local/ [root@localhost local]# mv apache-tomcat-9.0.16/ tomcat

3.为Tomcat的启动、关闭脚本创建软链接

[root@localhost ~]# ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/ [root@localhost ~]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/

4.为两台节点创建web目录,并编辑不同网页内容加以区别

[root@localhost local]# mkdir -pv /web/webapp1 mkdir: 已创建目录 "/web" mkdir: 已创建目录 "/web/webapp1" [root@localhost local]# vim /web/webapp1/index.jsp <!DOCTYPE html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.Date" %> <%@ page import="java.text.SimpleDateFormat" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/ html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>动态页面</title> </head> <body> <h1>动态页面01</h1> <p>这是个动态页面01</p> ##此处节点2编辑为<p>这是个动态页面02</p>,其余相同 </body> </html>

5.在tomact的主配置文件中添加指定web应用的文档基准目录区段

[root@localhost local]# vim /usr/local/tomcat/conf/server.xml #在第148<Host>字段下面添加<Context>字段参数 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context docBase="/web/webapp1" path="" reloadable="false"> </Context> 注:docBase:web应用的文档基准目录 reloadable:设置监视“类”是否变化 path="":设置默认“类”

4.2Nginx服务部署

1.安装依赖包

[root@nginx1 ~]# yum -y install gcc gcc-c++ make pcre-devel zlib-devel

2.为web服务器创建用户nginx,便于管理,再进行编译安装

[root@nginx1 ~]# useradd -M -s /sbin/nologin nginx [root@nginx1 ~]# tar zxf nginx-1.12.0.tar.gz [root@nginx1 ~]# cd nginx-1.12.0/ [root@nginx1 nginx-1.12.0]# ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx [root@nginx1 nginx-1.12.0]# make && make install

3.在nginx服务器中配置负载均衡和动静分离相关参数,对java文件请求转发到Tomcat处理 在nginx服务器中的主配置文件中修改如下内容

[root@localhost test]# vim /usr/local/nginx/conf/nginx.conf #keepalive_timeout 0; keepalive_timeout 65; #gzip on; upstream tomcat_server { #配置后端服务器池,以提供响应数据,权重为1:1 server 14.0.0.20:8080 weight=1; server 14.0.0.30:8080 weight=1; } server { listen 80; ...省略内容 location ~ .*.jsp$ { proxy_pass http://tomcat_server; #将java文件请求转发到Tomcat服务器池处理 proxy_set_header Host $host; }

4.启动服务

[root@nginx1 html]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ [root@nginx1 html]# systemctl stop firewalld.service [root@nginx1 html]# setenforce 0 [root@nginx1 html]# nginx

5.编辑静态页面

[root@localhost nginx-1.12.0]# vim /usr/local/nginx/html/index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>静态页面!</h1> <p>这是个静态页面</p> </body> </html>

5.结果验证 win10浏览器中访问静态页面 http://14.0.0.10

win10浏览器中访问动态页面(通过刷新页面会显示不同内容) http://14.0.0.10/test/index.jsp

4.3动静分离实验进阶

在前面实验基础上继续验证Tomcat处理动态页面,nginx处理静态图片(Tomcat指路径,nginx放图片)

1.两台Tomcat服务网页内容上添加如下参数

[root@localhost ~]# vim /web/webapp1/index.jsp

2.Nginx服务配置文件添加如下参数

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf server { ...省略内容 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ { root /web/webapp1; expires 30d; } [root@localhost ~]# mkdir -pv /web/webapp1 #注意:目录名称和tomcat网页站点存放目录名称要相同 [root@localhost ~]# cd /web/webapp1 [root@localhost webapp1]# ls #将对应文件名的图片放入到目录下 image.jpg

3.在浏览器上访问http://14.0.0.10/test/index.jsp,成功轮询访问,图片也正常加载

最新回复(0)