一文解读Nginx+Tomcat实现负载均衡、动静分离
前言
一、Nginx 负载均衡实现原理
1、Nginx 实现负载均衡是通过反向代理实现
反向代理(Reverse Proxy) 是指以 代理服务器(例:Nginx) 来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器(例:Tomcat),并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器(例:Nginx)对外就表现为一个反向代理服务器。一键获取22年最新面试题刷题手册
我们从客户端的视野来看,实际上客户端并不知道真实的服务提供者是哪台服务器,它只知道它请求了反向代理服务器。因此反向代理这种方式又对外隐藏了真实服务器的地址,从一定程度上降低了安全隐患。
2、Nginx 配置反向代理的主要参数
1)upstream 服务池名 {}
作用:配置后端服务器池,以提供响应数据
2)proxy_pass http:// 服务池名
作用:配置将访问请求转发给后端服务器池的服务器处理
二、Nginx 动静分离实现原理
1、动静分离原理
服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由 Nginx 提供服务,动态资源由 Nginx 转发至后端。
2、Nginx 静态处理优势
Nginx 处理静态页面的效率远高于 Tomcat 的处理能力
若 Tomcat 的请求量为1000次,则 Nginx 的请求量为6000次
Tomcat 每秒的吞吐量为0.6M,Nginx 的每秒吞吐量为3.6M
Nginx 处理静态资源的能力是 Tomcat 处理的6倍
三、Nginx + Tomcat 动静分离、负载均衡配置步骤
环境准备
注意: 脚本不太完美,请勿执行第二次
1、部署 Nginx 负载均衡服务器
安装Nginx服务详情请看: web服务之Nginx网站服务
下面是Nginx服务一键脚本,使用source或者. 执行脚本即可
#!/bin/bash
#脚本说明:编译安装nginx服务
#注意:使用前请将nginx-1.12.0.tar.gz放入/opt目录下#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0#安装所需开发包和编译环境、编译器
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make#创建程序用户,便于准确控制访问
useradd -M -s /sbin/nologin nginx#解压安装包
cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/#编译安装nginx;指定安装路径、指定用户名、组名、启用模块以支持统计状态
cd /opt/nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-file-aio --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_modulemake && make install#软链接便于系统识别nginx操作命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/#添加nginx系统服务
echo '[Unit]
Descriptinotallow=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target' > /lib/systemd/system/nginx.service#赋权及开启服务、开启开机自启
chmod 754 /lib/systemd/system/nginx.service
systemctl restart nginx.service
systemctl enable nginx.service
2、部署两台 Tomcat 应用服务器
安装Tomcat服务详情请看: web服务之Tomcat
下面是Tomcat服务一键脚本,使用source或者. 执行脚本即可
#!/bin/bash
#安装Tomcat服务#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0#安装JDK
cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm#设置JDK环境变量
echo 'export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH' > /etc/profile.d/java.shsource /etc/profile#安装并启动Tomcat
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
/usr/local/tomcat/bin/startup.sh
3、动静分离配置
Tomcat服务详情请看: web服务之Tomcat
1)Tomcat1 server 配置
mkdir /usr/local/tomcat/webapps/testvim /usr/local/tomcat/webapps/test/index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("动态页面 1:www.test1.com");%>
</body>
</html>#修改配置文件
vim /usr/local/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidatinotallow="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />
</Host>/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
2)Tomcat2 server 配置
mkdir /usr/local/tomcat/webapps/testvim /usr/local/tomcat/webapps/test/index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page</title>
</head>
<body>
<% out.println("动态页面 1:www.test2.com");%>
</body>
</html>#修改配置文件
vim /usr/local/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidatinotallow="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />
</Host>/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
3)Nginx server 配置
#准备静态页面和静态图片
echo '<html><body><h1>this is static</h1></body></html>' > /usr/local/nginx/html/index.html
mkdir /usr/local/nginx/html/img
cd /usr/local/nginx/html/img
vim /usr/local/nginx/conf/nginx.conf
......
http {......
#gzip on;upstream tomcat_server {server 192.168.163.11:8080 weight=1;server 192.168.163.12:8080 weight=1;
}server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;#配置Nginx处理动态页面请求,将 .jsp 文件请求转发到Tomcat 服务器处理location ~ .*\.jsp$ {proxy_pass http://tomcat_server;proxy_set_header HOST $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}#配置Nginx处理静态图片请求location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {root /usr/local/nginx/html/img/;expires 10d;}location / {root html;index index.html index.htm;}systemctl restart nginx.service
4、访问测试
测试静态页面效果
浏览器访问 http://192.168.163.10/
浏览器访问 http://192.168.163.10/pika.jpg
测试负载均衡效果,不断刷新浏览器测试
浏览器访问 http://192.168.163.10/test/index.jsp
一文解读Nginx+Tomcat实现负载均衡、动静分离相关推荐
- Nginx 反向代理 负载均衡 动静分离 高可用 原理
1.Nginx简介 1.1 概述 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理服务器,特点是占有内存少,并发能力强,能经受高负载的考验,有报告表明能 ...
- nginx+apache实现负载均衡+动静分离配置(编译安装)
一.编译安装nginx cd /usr/local/src wget http://nginx.org/download/nginx-1.6.3.tar.gz tar -zxvf nginx-1.6. ...
- Nginx 方向代理/负载均衡/动静分离/高可用
一,反向代理 正向代理:正向代理服务器位于客户端和服务器之间,为了向服务器获取数据,客户端要向代理服务器发送一个请求,并指定目标服务器,代理服务器将目标服务器返回的数据转交给客户端.这里客户端是要进行 ...
- Nginx+Tomcat服务器负载均衡实践方案
1. 为何选择Nginx+Tomcat做负载均衡? 1.1. Nginx是什么? Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3 ...
- nginx+tomcat的负载均衡
nginx+tomcat的负载均衡 一. Nginx的安装配置 1. Nginx服务器端 Nginx服务器的IP:192.168.5.108 Tomcat01的IP: 192.168.5.102 ...
- nginx+tomcat+memcached负载均衡
2019独角兽企业重金招聘Python工程师标准>>> nginx+tomcat+memcached负载均衡 负载均衡: 负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服 ...
- nginx+tomcat+redis负载均衡及session共享
概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...
- Nginx+Tomcat实现负载均衡、动静分离集群部署
Nginx+Tomcat实现负载均衡.动静分离集群部署 一.Tomcat多实例部署 1.安装好jdk 2.安装tomcat 3.配置tomcat环境变量 4.修改tomcat2中的server.xml ...
- Nginx+Tomcat+Redis负载均衡实现Session共享
Nginx+Tomcat+Redis负载均衡实现Session共享 环境描述 tomcat1:192.168.194.100:18080 tomcat2:192.168.194.100:28080 N ...
最新文章
- $(document).ready(function() {})不执行的问题
- 突破安全狗防注入及上传的一些思路
- MyBatis-Plus 代码生成器
- 拨号云服务器怎么自动配置网关_云服务器配置网站卡慢怎么办
- ubuntu server版本安装指南(1)
- C++ 一定要使用strcpy_s()函数 等来操作方法c_str()返回的指针
- 夺命雷公狗---ECSHOP---01-解决报错问题
- 在opensuse tumbleweed 上开发51单片机
- java如何制作浪漫表白界面_表白网页在线制作详细教程-我要表白网-最浪漫的表白网页在线生成网站...
- 第一讲:经典系统的基础 课后题答案解析
- hexo搭建博客系列(六)百度,必应,谷歌收录
- 计算机网络图标不见了,电脑网络图标不见了怎么恢复
- D365几个功能开发思路
- Ping值和带宽之间关系
- 计算机操作系统学习(六)设备管理
- Python爬虫-利用xpath解析爬取58二手房详细信息
- React Native适配安卓IOS刘海屏、异形屏方案
- Web-big、html、css、JavaScript、vue、webpack、git、微信小程序、uni-app、性能优化、兼容性、网络请求、web安全、其他
- 荣耀手表2给女生带来无数次无法拒绝的心动
- majicMIX realistic 模型