当前位置: 首页 > news >正文

nginx 负载均衡、反向代理实验

nginx 负载均衡、反向代理实验

实验目的

理解概念:明确反向代理和负载均衡的基本概念及其在网络架构中的作用。
掌握技能:学习如何配置Nginx以实现反向代理和负载均衡功能。
实践应用:通过实际操作,体验Nginx如何提升Web服务的可用性和扩展性。

理论基础

反向代理:解释反向代理的作用,即客户端请求首先到达代理服务器,然后由代理服务器转发给内部网络中的目标服务器。
负载均衡:说明负载均衡的概念,如何通过分配请求到多个服务器来优化资源使用、提高响应速度和避免单点故障。

设备准备

ip服务器
192.168.99.137负载均衡nginx
192.168.99.139tomcat1服务器
192.168.99.122tomcat2、3服务器
192.168.99.116nginx静态资源服务器
192.168.99.117独立的tomcat
systemctl stop firewalld
setenforce 0
yum -y install wget vim net-tools

负载均衡集群搭建

安装tomcat1

cd /opt
rpm -ivh  jdk-8u371-linux-x64.rpm
echo "export JAVA_HOME=/usr/java/jdk1.8.0-x64
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH" >>etc/profile.d/java.sh
# 使环境变量配置立即生效
sourse /etc/profile.d/java.sh
tar xf apache-tomcat-9.0.78.tar.gz
mv -f apache-tomcat-9.0.78 tomcat1cat >/opt/tomcat1/webapps/ROOT/index.jsp <<EOF
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title> #指定为 test1 页面
</head>
<body>
<% out.println("动态页面 1,http://www.test1.com");%>
</body>
</html>
EOF
/opt/tomcat1/bin/startup.sh
if [ $? -eq 0 ]; thenecho "tomcat1启动成功"
elseecho "tomcat1启动失败"exit 1
fi

在这里插入图片描述

tomcat2、3部署

cd /opt
rpm -ivh  jdk-8u371-linux-x64.rpm
tar xf apache-tomcat-9.0.78.tar.gz -C tomcat2
cat >/opt/tomcat2/webapps/ROOT/index.jsp <<EOF
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page</title> #指定为 test2 页面
</head>
<body>
<% out.println("动态页面 2,http://www.test1.com");%>
</body>
</html>
EOF
/opt/tomcat2/bin/startup.sh
#tomcat3
cd /opt
rpm -ivh  jdk-8u371-linux-x64.rpm
tar xf apache-tomcat-9.0.78.tar.gz -C tomcat3
cat >/opt/tomcat3/webapps/ROOT/index.jsp <<EOF
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test3 page</title> #指定为 test3 页面
</head>
<body>
<% out.println("动态页面 3,http://www.test1.com");%>
</body>
</html>
EOF
/opt/tomcat3/bin/startup.sh

在这里插入图片描述

负载均衡器配置

yum install -y epel-release && yum install -y nginx

在http模块中添加upstream模块

upstream tomcats {server 192.168.99.139:8080 weight=1;server 192.168.99.122:8081 weight=1;server 192.168.99.122:8082 weight=1;}

在server中添加location,只针对jsp结尾的请求进行负载均衡

 listen 80;server_name 192.168.99.137;location ~ .*\.jsp$ {proxy_pass http://tomcats;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}

测试:每次刷新1、2、3循环
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

反向代理静态资源服务器

nginx静态资源服务器添加图片资源
#配置Nginx处理静态图片请求

   location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {#root /usr/share/nginx/html/img;proxy_pass http://192.168.99.116;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;expires 10d;}

在这里插入图片描述

反向代理一台独立的tomcat服务器

192.168.99.117

cd /opt
rpm -ivh  jdk-8u371-linux-x64.rpm
echo "export JAVA_HOME=/usr/java/jdk1.8.0-x64
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH" >>etc/profile.d/java.sh# 使环境变量配置立即生效sourse /etc/profile.d/java.sh
tar xf apache-tomcat-9.0.78.tar.gz
mv -f apache-tomcat-9.0.78 tomcat4cat >/opt/tomcat4/webapps/ROOT/index.jsp <<EOF
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html><head>
<title>JSP test4 page</title> #指定为 test4 页面
</head><body>
<% out.println("动态页面 4");%>
</body>
</html>
EOF
/opt/tomcat4/bin/startup.sh

在这里插入图片描述
ngnix服务器配置

 server {listen 81;server_name 192.168.99.137:8080;location ~ .*\.jsp$ {proxy_pass http://tomcats;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}

在这里插入图片描述

http://www.lryc.cn/news/343198.html

相关文章:

  • Linux信号捕捉
  • 【Leetcode】 top100 round2 需要加强版
  • ElasticSearch知识点汇总
  • phpize +Visual Studio + MSYS2 + bison 草稿记录并未正常完成
  • 网络安全与IP地址的关联
  • 罗德与施瓦茨 SMC100A信号发生器9kHz至3.2 GHz
  • 新能源汽车充电站智慧充电电能服务综合解决方案
  • pytest(二):关于pytest自动化脚本编写中,初始化方式setup_class与fixture的对比
  • 项目中遇到的问题
  • Deeplab的复现(pytorch实现)
  • input上添加disabled=“true“,点击事件失效处理办法
  • 精酿啤酒的魅力:啤酒的与众不同风味
  • 检测机构的双资质是什么?
  • 基于springboot的校园食堂订餐系统
  • 基于SpringBoot的高校推荐系统
  • 了解 websocket
  • C++中erase函数的用法
  • 数字旅游以科技创新为核心竞争力:推动旅游服务的智能化、高效化,满足游客日益增长的旅游需求
  • (MATLAB)安装指南
  • 社区智能奶柜:创业新机遇
  • 地盘紧固的关键技术——SunTorque智能扭矩系统
  • Mybatis plus update PG json 类型 报错解决
  • 精通 Docker:简化开发、部署与安全保障
  • KIMI的API使用:重点是他的API在使用的适合可以实时调用tool(外部联网等)
  • Android内核之Binder读写通信:binder_ioctl_write_read用法实例(七十)
  • 【C语言/数据结构】经典链表OJ习题~第二期——链中寻环
  • MySQL日志机制【undo log、redo log、binlog 】
  • SSL通信、证书认证原理和失败原因
  • 【MsSQL】数据库基础 库的基本操作
  • AI编码工具-通义灵码功能实测