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

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

实验目的

理解概念:明确反向代理和负载均衡的基本概念及其在网络架构中的作用。

掌握技能:学习如何配置Nginx以实现反向代理和负载均衡功能。

实践应用:通过实际操作,体验Nginx如何提升Web服务的可用性和扩展性。

理论基础

反向代理:解释反向代理的作用,即客户端请求首先到达代理服务器,然后由代理服务器转发给内部网络中的目标服务器。

负载均衡:说明负载均衡的概念,如何通过分配请求到多个服务器来优化资源使用、提高响应速度和避免单点故障。

设备准备

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

负载均衡集群搭建

安装tomcat1

bash 复制代码
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 tomcat1

cat >/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 ]; then
    echo "tomcat1启动成功"
else
    echo "tomcat1启动失败"
    exit 1
fi

tomcat2、3部署

bash 复制代码
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

负载均衡器配置

bash 复制代码
yum install -y epel-release && yum install -y nginx

在http模块中添加upstream模块

perl 复制代码
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结尾的请求进行负载均衡

perl 复制代码
 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处理静态图片请求

perl 复制代码
   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

bash 复制代码
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 tomcat4

cat >/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服务器配置

perl 复制代码
 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;
        }
     }
相关推荐
gd63213742 小时前
银河麒麟 aarch64 linux 里面的 qt 怎么安装kit
linux·服务器·qt
A-花开堪折2 小时前
Qemu 嵌入式Linux驱动开发
linux·运维·驱动开发
磊灬泽2 小时前
【Linux驱动开发】PWM子系统-servo
linux·运维·算法
郝学胜-神的一滴3 小时前
Linux系统函数stat和lstat详解
linux·运维·服务器·开发语言·c++·程序人生·软件工程
Mr.亮先生3 小时前
常用、高效、实用的 Linux 服务器监控与运维工具清单
linux·运维·服务器
王道长服务器 | 亚马逊云3 小时前
AWS CloudWatch Logs Insights:实时日志分析,让服务器问题无所遁形
服务器·云计算·aws
poemyang4 小时前
单线程如何撑起百万连接?I/O多路复用:现代网络架构的基石
linux·rpc·i/o 模式
AKAMAI4 小时前
Linebreak赋能实时化企业转型:专业系统集成商携手Akamai以实时智能革新企业运营
人工智能·云原生·云计算
极客先躯4 小时前
高可用巡检脚本实战:一键掌握服务、网络、VIP、资源状态
运维·网络·金融
鹿鸣天涯4 小时前
Wine 10.15 发布!Linux 跑 Windows 应用更丝滑了
linux·运维·windows