Nginx+Tomcat实现负载均衡与动静分离
一、Nginx负载均衡和动静分离
1、Nginx 实现负载均衡是通过反向代理实现
反向代理(Reverse Proxy ) 是指以 代理服务器(例:Nginx ) 来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器(例:Tomcat ),并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器(例:Nginx )对外就表现为一个反向代理服务器。
我们从客户端的视野来看,实际上客户端并不知道真实的服务提供者是哪台服务器,它只知道它请求了反向代理服务器。因此反向代理这种方式又对外隐藏了真实服务器的地址,从一定程度上降低了安全隐患。
2、Nginx配置反向代理主要参数
配置后端服务器池,以提供响应数据
upstream 服务器名 {}
配置将访问请求转发给后端服务器池名
proxy_pass http:
3、Nginx静态处理优势
Nginx处理静态页面的效率远高于Tomcat的处理能力
若Tomcat的请求量为1000次,则Nginx的请求量为6000次
Tomcat每秒的吞吐量为0.6M,Nginx的每秒吞吐量为3 .6M
Nginx处理静态资源的能力是Tomcat处理的6倍
二,nginx + tomcat 部署
环境:
nginx 192.168.10.11
tomcat1 192.168.10.12
tomcat2 192.168.10.13
1、Nginx服务器配置
编辑脚本
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
useradd -M -s /sbin/nologin nginx
cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/
cd nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
echo '[Unit]
Description=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 start nginx.service
systemctl enable nginx.service
2、部署2台Tomcat 应用服务器
vim /etc/profile.d/java.sh
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
source /etc/profile.d/java.sh
java -version
3、安装启动 Tomcat
① 解压apache-tomcat软件包
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/
startup.sh
netstat -natp | grep 8080
3.动静分离配置
1、Tomcat1 server 配置
mkdir /usr/local/tomcat/webapps/test
vim /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,http://www.test1.com" );%>
</body>
</html>
vim /usr/local/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false" >
<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />
---》wq
shutdown.sh
startup.sh
2、Tomcat2 server 配置
mkdir /usr/local/tomcat/webapps/test
vim /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("动态页面 2,http://www.test2.com" );%>
</body>
</html>
vim /usr/local/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false" >
<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />
shutdown.sh
startup.sh
4.Nginx server 配置
准备静态页面
echo '<html><body><h1>this is static</h1></body></html>' > /usr/l ocal/nginx/html/index.html
cd /usr/local /nginx/html/img/
[root@localhost img]
cat.jpg
vim /usr/local /nginx/conf/nginx.conf
......
http {
......
upstream tomcat_server {
server 192.168 .10.12 :8080 weight=1 ;
server 192.168 .10.13 :8080 weight=1 ;
}
server {
listen 80 ;
server_name www.ceshi.com;
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;
}
location / {
root html;
index index.html index.htm;
}
访问 http:// 192.168 .10.11 ,会出现Nginx的静态页面
而访问 http:// 192.168 .10.11 /index.jsp 时,会动态的在Tomcat1和Tomcat2之间进行切换访问。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律