搭建nginx反向代理实现动静态分离

news2024/11/8 18:31:03

搭建nginx反向代理实现动静态分离

  • 一、实现高可用动静分离
  • 二 实验步骤
    • 2.1 安装nginx和开启路由转发
    • 2.2 实现lvs负载均衡
    • 2.3 实现动态网页功能
    • 2.4 实现nginx反向代理
    • 2.5 重启服务网页查看

一、实现高可用动静分离

1、部署目的
①用户访问业务时访问虚拟ip由lvs负责转发请求到业务上,采用轮询调度算法。

②用户访问虚拟ip为静态业务时lvs将业务转到nginx上处理。

③用户访问虚拟ip为动态业务时lvs将业务转到nginx上由nginx反向代理转给tomcat处理,采用轮询调度算法

二 实验步骤

2.1 安装nginx和开启路由转发

nginx01、nginx02操作:
systemctl stop firewalld 
sentenforce 0
#关闭防火墙及selinux安全验证
yum install epel-release -y
yum install nginx -y
systemctl start nginx  
#安装epel扩展源,然后安装nginx并启动
echo nginx1 ck >/usr/share/nginx/html/index.html
echo nginx2 boa >/usr/share/nginx/html/index.html
#修改nginx主页内容,nginx01修改为nginx01 test,nginx02修改nginx02 test
curl 192.168.10.10
curl 192.168.10.20
#分别在俩台主机测试能否互相访问到定义的静态内容
ifconfig ens33:1 192.168.10.100 netmask 255.255.255.0
#2台nginx添加虚拟网卡lo:0并配置ip
route add -host 192.168.10.100 dev ens33:1
#添加路由192.168.30.100走ens33:1网卡
vim /etc/sysctl.conf
#编辑内核参数,添加内容
![请添加图片描述](https://img-blog.csdnimg.cn/5f5ce4ba7e484cdba7390513258e9914.png)

#保存退出后查看配置
sysctl  -p 
#查看内核参数是否配置完成

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

2.2 实现lvs负载均衡

lvs-master、lvs-slave执行:
yum install ipvsadm  -y 
#yum安装ipvsadm服务,即LVS负载均衡的真实服务名
systemctl start ipvsadm.service
#开启ipvsadm服务,此步骤启动服务报错
systemctl status ipvsadm.service>1.txt
cat 1.txt
#将ipvsadm服务启动报错提示导给1.txt文件并查看。内容如下截图
ipvsadm-save>/etc/sysconfig/ipvsadm
#报错信息提示是没有/etc/sysconfig/ipvsadm文件,解决方法是将ipvsadm保存到/etc/sysconfig/ipvsadm文件下。
systemctl  restart ipvsadm.service 
#重新启动ipvsadm成功
yum install keepalived.x86_64 -y
#安装keepalived.x86_64
vim /etc/sysctl.conf
#编辑内核文件
添加内容:
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
#保存退出
sysctl  -p
#查看添加内核内容有则成功
vim keepalived.conf
#编辑配置文件
修改内容:
global_defs模块中
smtp_server 127.0.0.1
#改为127.0.0.1即改为本机
router_id LVS_01
#第一条LVS名称改为LVS_01
   #vrrp_skip_check_adv_addr
   #vrrp_strict
   #vrrp_garp_interval 0
   #vrrp_gna_interval 0
#以上4行安全机制添加#号注释掉
vrrp_instance VI_1 {
    state MASTER       #主是master,网卡类型是ens33     
    interface ens33
    }

virtual_ipaddress {
        192.168.10.100
    }
#虚拟主机地址改为要配置的虚拟ip,可配置多个,若只写一个将模板的其他2个删除。
virtual_server 192.168.10.100 80 {
#虚拟ip地址改为配置的虚拟ip和web服务端口号
    delay_loop 6
    lb_algo rr
    lb_kind DR
#模式改为DR模式即直连模式
    persistence_timeout 50
    protocol TCP
 
    real_server 192.168.10.10 80 {
#第一台真实ip地址和web服务端口号
        weight 1
        TCP_CHECK {
#添加TCP_check 注意分号前有空格,检测真实服务器健康状态,即检测后端服务器80端口,若不正常则访问其他台服务器
            connect_port 80
#添加连接端口80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.10.20 80 {
#第二台真实ip地址和web服务端口号
        weight 1
        TCP_CHECK {
#添加TCP_check 注意分号前有空格,检测真实服务器健康状态,即检测后端服务器80端口,若不正常则访问其他台服务器
            connect_port 80
#添加连接端口80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
#俩台真实服务器后的所有内容删除即可,修改完成后保存退出。完整配置文件如下图
scp keepalived.conf 192.168.10.20:/etc/keepalived/ 
LVS_02配置文件修改:
#将配置好的配置文件传到LVS_02服务器上
#第一步修改 router_id LVS_02 名称改为LVS_02
#第二步要修改vrrp_instance VI_1模块中的state为BACKUP,和priority 90改为比主LVS优先级低的等级
#其他不用修改保存即可
systemctl restart ipvsadm  keepalived
#重启服务
ipvsadm  -ln

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述

2.3 实现动态网页功能

tomcat01、tomcat02执行:
yum install tomcat -y 
systemcat start tomcat
#安装并启动tomcat服务
cd /var/lib/tomcat/webapps
mkdir test
![请添加图片描述](https://img-blog.csdnimg.cn/e2c194bacae84f1f87b87423d73ea90c.png)

添加动态页面内容:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>test</title>
</head>
<body>
<% out.println("动态页面:test tomcat01");%>
#页面输出内容为test tomcat01,tomcat02服务器上则将01改为02方便查看实验效果
</body>
</html>
#创建动态资源页面
vim /etc/tomcat/server.xml
#修改主配置文件内容约125行到129行,原有内容不需要更改,对比此段内容添加即可,如下截图中,原本下面几行的host要删除![请添加图片描述](https://img-blog.csdnimg.cn/25f94d78a88941ea8baaa6397c2c649d.png)

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlNamespaceAware="false">
            <Context docBase="/var/lib/tomcat/webapps/test"
             path="" reloadable="true" />
              #指定自己的tomcat页面访问文件路径  
systemctl restart tomcat
#重启服务在本机分别输入192.168.10.10:8080和192.168.10.20:8080测试能否访问到内容

请添加图片描述
请添加图片描述

2.4 实现nginx反向代理

nginx01、nginx02执行:
vim /etc/nginx/conf.d/upstream.conf
#直接在nginx子配置文件夹中创建一个新的子配置文件,因为是yum安装无须在主配置文件中指定子配置文件
文件内容:
upstream nginxtest{
server 192.168.10.10:8080;
server 192.168.10.20:8080;
}
#反向代理模块,将2个tomcat的ip和端口号写入其中,反代模块名称为nginxtest
server {
location / {
		root html; 
		index index.html index.htm;
}
#server模块中的第一个location模块,指定了根为html,支持主页文件类型三个,注意分号结尾
	location  ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
	root /usr/share/nginx/html;	
}
#server模块中第二个location模块,配置不区分大小写的任意开头只要以.()括号内的任意一个内容结尾则为静态资源访问/usr/share/nginx/html下的页面
	location ~ .*\.jsp$ {
	proxy_pass http://nginxtest;
	proxy_set_header HOST $host;    
	proxy_set_header X-Real-IP $remote_addr;            
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#server模块中第三个location模块,配置不区分大小写的任意开头只要.jsp结尾就由nginx反向代理模块nginxtest进行处理
}

请添加图片描述

2.5 重启服务网页查看

systemctl restart  nginx
systemctl  restart tomcat

在这里插入图片描述
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/420891.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LAMP及论坛搭建

1.编译安装apache 关闭防火墙&#xff0c;将安装Apache所需软件包传到/opt目录下 systemctl stop firewalld.service setenforce 0[rootlocalhost opt]# lsapr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2安装环境依赖包 yum -y install gcc gcc-c make pc…

淘宝商品数据分析怎么操作?从哪些方面下手?

说起淘宝上面的商品可谓是成千上万&#xff0c;因此要是想对这些商品进行数据分析的话&#xff0c;也是需要一些技能的&#xff0c;并不是所有的数据都特别重要&#xff0c;我们需要学会选择比较重要的数据来进行分析。详细内容还请各位接着往下看! 一、根据淘宝指数分析以下相…

【JSP学习笔记】2.JSP 结构、生命周期及语法

前言 本章介绍JSP的结构、生命周期及语法。 JSP 结构 网络服务器需要一个 JSP 引擎&#xff0c;也就是一个容器来处理 JSP 页面。容器负责截获对 JSP 页面的请求。本教程使用内嵌 JSP 容器的 Apache 来支持 JSP 开发。 JSP 容器与 Web 服务器协同合作&#xff0c;为JSP的正…

springboot读取yml文件中的list列表、数组、map集合和对象方法实例

目录前言application.yml定义list集合application.yml定义数组类型总结 前言 springboot配置文件yml类型简单的风格&#xff0c;十分受大家的欢迎&#xff0c;支持字符string类型&#xff0c;支持列表list类型&#xff0c;支持集合map类型&#xff0c;支持数组array类型&#x…

MySQL数据库 - 基础篇

本文文章基于黑马《MySQL》课程所做的笔记 1、基础篇 1.1、MySQL概述 数据库相关概念 名称全称简介数据库存储数据的仓库&#xff0c;数据是有组织的进行存储DataBase(DB)数据库管理系统操纵和管理数据库的大型软件DataBase Management System(DBMS)SQL操作关系型数据库的编程…

ijkplayer 编译增加支持更多的音视频格式

ijkplayer是B站开源的一款基于ffmpeg的移动端播放器。但为了减少播放器的体积&#xff0c;很多音视频的格式播放默认都是不支持的&#xff0c;需要自己下载ijkplayer源码进行编译。这里以mac环境下android为例&#xff0c;简述ijkplayer的编译过程&#xff0c;以及为了支持更多…

最新版本 Stable Diffusion 开源 AI 绘画工具之图生图进阶篇

✨ 目录&#x1f388; 图生图基本参数&#x1f388; 图生图&#xff08;img2img&#xff09;&#x1f388; 涂鸦绘制&#xff08;Sketch&#xff09;&#x1f388; 局部绘制&#xff08;Inpaint&#xff09;&#x1f388; 涂鸦蒙版&#xff08;Inpaint sketch&#xff09;&…

Adams2020软件安装教程

目录 一、软件简介 二、软件下载 三、软件安装 一、软件简介 Adams是一款多领域仿真软件&#xff0c;可以对机械、电子、流体、化学等系统进行建模、仿真和分析。Adams具有强大的动力学分析功能&#xff0c;可以模拟多种复杂系统的运动、力学、热力学和控制行为&#xff0c;包…

点云目标检测:open3d多窗口联动可视化

多个模型之间的对比除了指标之外,还需要可以直观的对比可视化结果,这次介绍一下如何使用open3d同时打开两个窗口分别加载两个模型的结果,同时实现两个窗口的联动,也就是当一个窗口拖动或者缩放时另外一个窗口也跟着做同样的变换。 点云可视化:使用open3d实现点云连续播放这…

nginx虚拟主机

一、基于域名的nginx虚拟主机 1、基于域名的nginx虚拟主机的操作步骤 1.1 为虚拟主机提供域名和IP的映射(也可以使用DNS正向解析) echo "192.168.2.66 www.xkq.com www.wy.com" >> /etc/hosts1.2 为虚拟主机准备网页文档 mkdir -p /var/www/html/ly/ mkdir…

第一章 深度学习入门之流程初体验

效果图 文章中采用的是棋盘格数据&#xff0c;这张图里面用的是开源的模型&#xff0c;可以用于测试&#xff0c;此图为最终效果&#xff0c;加载mp4视频&#xff0c;通过opencv读取图像&#xff0c;传递到infer接口&#xff0c;进行推理识别&#xff0c;利用opencv显示出来 …

比较好的文档翻译软件-哪个翻译软件最精准

免费语言翻译软件可以帮助用户快速准确地翻译语言&#xff0c;其主要作用如下&#xff1a; 辅助语言学习&#xff1a;语言翻译软件可以帮助用户学习语言&#xff0c;让用户更好地理解在不同语言之间的差异&#xff0c;从而使语言学习更加高效。 翻译外语内容&#xff1a;语言翻…

Java中常见的几种分布式锁介绍及实战应用

文章目录什么是锁&#xff1f;场景描述代码示例总结Java中单体应用锁的局限性&分布式锁前言互联网系统架构的演进单体应用锁的局限性什么是分布式锁分布式锁的设计思路目前存在的分布式的方案Java中锁的解决方案前言乐观锁 与 悲观锁公平锁 与 非公平锁总结分布式锁设计如何…

Python基础教程:__call__用法

人生苦短&#xff0c;我用python python 安装包资料:点击此处跳转文末名片获取 __call__可以使得方法变成可被调用对象&#xff1b; (PS&#xff1a;python中的方法和普通函数有点区别&#xff1a; 方法的第一个参数是类实例) 允许一个类的实例像函数一样被调用。 实质上说…

相机雷达时间同步(基于ROS)

文章目录运行环境&#xff1a;思路&#xff1a;同步前和同步后效果对比1.1创建工作空间1.2创建功能包2.1编写源文件2.2编写头文件2.3编写可执行文件2.4配置文件3.1编译运行4.1录制时间同步后的rosbag4.2rviz可视化rosbag运行环境&#xff1a; ubuntu20.04 noetic usb_cam 速腾R…

小黑子—Java从入门到入土过程:第七章

Java零基础入门7.0Java系列第七章1. 游戏打包exe2. API2.1 Math2.2 练习2.2.1 判断质数2.2.2 判断水仙花数&#xff08;自幂数&#xff09;2.3 System2.4 Runtime2.5 Object2.5.1 Object 的成员方法(1) toString(2) equals 比较两个对象是否相等(3) clone方法&#xff08;Objec…

投放视频广告时,如何快速与第三方播放器兼容?

新媒体时代&#xff0c;广告样式越来越丰富。相较于传统的图文信息&#xff0c;视频类广告更具有直观性&#xff0c;能够让消费者在了解产品知识和功能的同时加深对产品的印象。 因此在各类网站或App上投放视频类广告是个很好的宣传方式&#xff0c;但广告商们如果想在网站上展…

1.14 从0开始学习Unity游戏开发--物理引擎

上一篇文章我们讲了如何动态创建物体&#xff0c;以及如何用Prefab机制复用我们制作好的物体和逻辑&#xff0c;那么本篇我们将会讲解如何利用这些功能&#xff0c;结合Unity自带的物理引擎&#xff0c;实现一个简单的FPS游戏的效果。 物理组件 首先我们需要先了解如何使用Un…

Linux基础(超级无敌认真好用,万字收藏篇!!!!)

文章目录Linux基础1 Linux概述1.1 Linux特点1.2 Linux和Window区别2 Linux安装2.1 什么是虚拟化2.2 安装虚拟机2.3 配置网络环境3 Linux文件目录4 Linux常用命令4.1 文件与目录操作4.2 查看文件内容4.3 文本内容处理4.4 查询操作4.5 网络相关4.6 其他命令4.7 解压缩命令5 VI/VI…

今天面了个腾讯拿 38K 出来的,让我见识到了基础的天花板

今天上班开早会就是新人见面仪式&#xff0c;听说来了个很厉害的大佬&#xff0c;年纪还不大&#xff0c;是上家公司离职过来的&#xff0c;薪资已经达到中高等水平&#xff0c;很多人都好奇不已&#xff0c;能拿到这个薪资应该人不简单&#xff0c;果然&#xff0c;自我介绍的…