Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡

文章目录

  • [1. 配置反向代理](#1. 配置反向代理)
    • [1.1 前置准备](#1.1 前置准备)
    • [1.2 代理服务器配置](#1.2 代理服务器配置)
    • [1.3 真实服务器配置](#1.3 真实服务器配置)
    • [1.4 客户机配置](#1.4 客户机配置)
  • [2. Tomcat 多实例部署](#2. Tomcat 多实例部署)
    • [2.1 部署JDK](#2.1 部署JDK)
    • [2.2 设置JDK环境变量](#2.2 设置JDK环境变量)
    • [2.3 部署Tomcat服务](#2.3 部署Tomcat服务)
    • [2.4 路径启动](#2.4 路径启动)
  • [3. Nginx联动Tomcat实现动静分离、负载均衡](#3. Nginx联动Tomcat实现动静分离、负载均衡)
    • [3.1 基本原理](#3.1 基本原理)
    • [3.2 前置准备](#3.2 前置准备)
    • [3.3 配置nginx1实现四层代理,负载均衡](#3.3 配置nginx1实现四层代理,负载均衡)
    • [3.4 配置nginx2\3实现七层代理,动静分离](#3.4 配置nginx2\3实现七层代理,动静分离)
    • [3.5 Tomcat配置,作为动态资源服务器](#3.5 Tomcat配置,作为动态资源服务器)
    • [3.6 测试](#3.6 测试)

1. 配置反向代理

1.1 前置准备

bash 复制代码
#所需环境
192.168.67.100 #nginx代理服务器
192.168.67.101 #客户机
192.168.67.102 #真实服务器

1.2 代理服务器配置

bash 复制代码
vim /apps/nginx/conf/nginx.conf
#编辑主配置文件

#在http块中添加
include        /apps/nginx/conf.d/*.conf
bash 复制代码
vim /apps/nginx/conf.d/pc.com
#编辑子配置文件

server{
        listen 192.168.67.100:80;
        server_name www.pc.com;
     location / {
        root  /apps/nginx/html/pc;
       proxy_pass http://192.168.67.102;
    }
}

nginx -t
nginx -s reload
#重新加载

1.3 真实服务器配置

bash 复制代码
systemctl stop firewalld
setenforce 0 
#关闭防火墙和selinux
bash 复制代码
yum  install   httpd  -y #安装服务

cd  /var/www/html
echo   "Hi~"  > index.html #主页内容

systemctl start httpd #开启服务
bash 复制代码
vi /etc/hosts
#添加地址映射

192.168.67.100 www.pc.com

1.4 客户机配置

bash 复制代码
vim  /etc/hosts

192.168.67.100  www.pc.com

测试

客户机访问代理服务器

bash 复制代码
curl www.pc.com

2. Tomcat 多实例部署

2.1 部署JDK

bash 复制代码
#所需安装包
apache-tomcat-9.0.16.tar.gz  
jdk-8u201-linux-x64.rpm

rpm -ivh jdk-8u201-linux-x64.rpm  

2.2 设置JDK环境变量

bash 复制代码
#查看全局配置文件
vim /etc/profile
bash 复制代码
vi /etc/profile.d/java.sh


export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64   
#java家目录
export JRE_HOME=$JAVA_HOME/jre
#jre家目录
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
#指向java工具包和环境包
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
#java环境变量
bash 复制代码
source /etc/profile.d/java.sh
#调用Java脚本

java -version
#查看当前JDK版本

2.3 部署Tomcat服务

bash 复制代码
cd /opt
tar xf apache-tomcat-9.0.16.tar.gz

#解压tomcat源码包
bash 复制代码
cp -r apache-tomcat-9.0.16/ /usr/local/tomcat1
cp -r apache-tomcat-9.0.16/ /usr/local/tomcat2
cp -r apache-tomcat-9.0.16/ /usr/local/tomcat3
#将tomcat复制到usr/local ,并且改名,方便管理
bash 复制代码
#更改tomcat1、2、3 server.xhl文件
vi /usr/local/tomcat1/conf/server.xml



重复操作

bash 复制代码
#修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量
bash 复制代码
#tomcat1
vi /usr/local/tomcat1/bin/startup.sh 

#添加
export CATALINA_BASE=/usr/local/tomcat1
export CATALINA_HOME=/usr/local/tomcat1
export TOMCAT_HOME=/usr/local/tomcat1
bash 复制代码
vi /usr/local/tomcat1/bin/shutdown.sh

#添加内容
export CATALINA_BASE=/usr/local/tomcat1
export CATALINA_HOME=/usr/local/tomcat1
export TOMCAT_HOME=/usr/local/tomcat1


重复上述操作

2.4 路径启动

bash 复制代码
#绝对路径启动
 /usr/local/tomcat1/bin/startup.sh
 /usr/local/tomcat2/bin/startup.sh
 /usr/local/tomcat3/bin/startup.sh
ss -natp |grep java
#查看进程
bash 复制代码
#网页启动
192.168.67.102:8081
192.168.67.102:8082
192.168.67.102:8083



3. Nginx联动Tomcat实现动静分离、负载均衡

3.1 基本原理

服务端接收来自客户端的请求中,包含静态资源和动态资源,静态资源由Nginx进行处理,动态资源Nginx转发至后端由tomcat负责处理。

3.2 前置准备

bash 复制代码
#tomcat多实例
192.168.67.102:8081
192.168.67.102:8082
192.168.67.102:8083

#四层实现负载均衡
nginx1 192.168.67.100 #用性能最好的一台

#七层实现动静分离
nginx2 192.168.67.101
nginx3 192.168.67.103

#客户机
192.168.67.104

3.3 配置nginx1实现四层代理,负载均衡

bash 复制代码
systemctl stop firewalld
setenforce 0
#关闭防火墙和selinux策略
bash 复制代码
#编译安装nginx并加入systemd服务
#依赖
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
#创建管理用户
useradd -M -s /sbin/nologin nginx
bash 复制代码
#编译安装ngnix
cd /opt

#解压缩软件包
tar -zxf nginx-1.18.0.tar.gz

cd nginx-1.18.0
#加入源码包

#搭建编译环境
./configure \
--prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-file-aio \									#启用文件修改支持
--with-http_stub_status_module \					#启用状态统计
--with-http_gzip_static_module \					#启用 gzip静态压缩
--with-http_flv_module \							#启用 flv模块,提供对 flv 视频的伪流支持
--with-http_ssl_module								#启用 SSL模块,提供SSL加密功能
--with-stream										#启用 stream模块,提供4层调度

make -j2 && make install
#编译并安装 

#软连接 添加到环境变量中
ln -s /apps/nginx/sbin/nginx /usr/local/
bash 复制代码
#添加到系统服务中
vim /lib/systemd/system/nginx.service

[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

systemctl daemon_reload
chmod 754 /lib/systemd/system/nginx.service

#启动nginx
systemctl start nginx
systemctl status nginx
#查看运行状态 
bash 复制代码
#配置负载均衡
vim /apps/nginx/conf/nginx.conf
...
#写在http部分上面
stream {
	
    upstream myserver {
		server 192.168.67.101:80 weight=1;
		server 192.168.67.103:80 weight=1;
    }
    server {
        listen 80;
        proxy_pass myserver;
    }
}

nginx -t
nginx -s reload 
#重新加载



bash 复制代码
ss -natp |grep nginx
#查看是否正常运行

3.4 配置nginx2\3实现七层代理,动静分离

nginx2和3配置基本相同,主页文件相同名字,不同内容的文本和静态网页,用于测试负载均衡

bash 复制代码
#前置准备
systemctl disable firewalld --now
setenforce 0

#yum安装nginx
yum -y install epel-release.noarch -y
yum -y install nginx 

#如果开启了httpd服务关了,不然会导致nginx无法开启

#开启服务
systemctl start nginx 
bash 复制代码
vim /etc/nginx/nginx.conf
#编辑主配置文件
bash 复制代码
#添加并编辑子配置文件
touch conf.d/scj.conf
vim conf.d/scj.conf
bash 复制代码
nginx -t
nginx -s reload
#重新加载
bash 复制代码
#静态页面
cd /usr/share/nginx/html
mkdir scj
echo "This is nginx2 ,from scj" > scj/index.html


3.5 Tomcat配置,作为动态资源服务器

bash 复制代码
#前置准备
systemctl stop firerwalld
setenforce 0

#当前已经部署了tomcat多实例
#详情见上
bash 复制代码
#准备动态资源
mkdir /usr/local/tomcat1/webapps/test
mkdir /usr/local/tomcat2/webapps/test
mkdir /usr/local/tomcat3/webapps/test
#创建动态资源根目录
bash 复制代码
#创建动态页面

#tomcat1
vi /usr/local/tomcat1/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>

#创建动态页面

#tomcat2
vi /usr/local/tomcat2/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.test1.com");%>
</body>
</html>

#tomcat3
vi /usr/local/tomcat3/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test3 page</title>   
</head>
<body>
<% out.println("动态页面 3,http://www.test1.com");%>
</body>
</html>
bash 复制代码
#重启服务

/usr/local/tomcat1/bin/shutdown.sh 
/usr/local/tomcat1/bin/startup.sh 

/usr/local/tomcat2/bin/shutdown.sh 
/usr/local/tomcat2/bin/startup.sh 

/usr/local/tomcat3/bin/shutdown.sh 
/usr/local/tomcat3/bin/startup.sh 

ss -natp |grep java
#查看运行情况

3.6 测试

bash 复制代码
#访问静态资源
浏览器访问 http://192.168.67.100/scj/index.html
多次刷新


bash 复制代码
#访问动态资源
http://192.168.67.100/test/index.jsp
多次刷新



相关推荐
gsls2008084 小时前
docker打包nginx版wordpress
nginx·docker·wordpress
white.tie7 小时前
linux配置nginx
linux·运维·nginx
尼克_张8 小时前
tomcat配合geoserver安装及使用
java·tomcat
致宏Rex9 小时前
Nginx 负载均衡详解 x Shell 脚本实战
nginx·负载均衡·运维开发
脱了格子衬衫10 小时前
使用源码编译安装 Tomcat
linux·tomcat
大风吹PP凉10 小时前
34Web服务器(如Apache, Nginx)
服务器·nginx·apache
tian-ming10 小时前
JavaWeb后端开发知识储备1
java·spring boot·nginx·spring·maven
BillKu13 小时前
Linux设置Nginx开机启动
linux·运维·nginx
qiyi.sky15 小时前
JavaWeb——Web入门(8/9)- Tomcat:基本使用(下载与安装、目录结构介绍、启动与关闭、可能出现的问题及解决方案、总结)
java·前端·笔记·学习·tomcat
编程武士18 小时前
nginx openresty lua-resty-http 使用的一些问题记录
nginx·lua·openresty·lua-resty-http