首页 > 系统相关 >搭建nginx反向代理实现动静态分离

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

时间:2023-04-16 20:00:14浏览次数:44  
标签:ip ipvsadm 192.168 nginx 反向 conf 80 搭建

一、实现高可用动静分离

1、部署目的

2、部署拓扑

3、实现静态页面

4、实现lvs负载均衡

5、实现动态网页功能 

6、 实现nginx反向代理

7、静态结果展示 

8、动态结果展示

 

 

 

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

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

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

2、部署拓扑

 客户端:192.168.217.150

虚拟IP: 192.168.217.101

lvs-master:192.168.217.150

lvs-slave:192.168.217.102

nginx01:192.168.217.103

tomcat01:192.168.217.103

nginx02:192.217.217.104

tomcat02:192.168.217.104

 

 

3、实现静态页面

nginx01、nginx02操作:
systemctl stop firewalld 
sentenforce 0
#关闭防火墙及selinux安全验证
yum install epel-release -y
yum install nginx -y
 
#安装epel扩展源,然后安装nginx并启动
echo nginx01 test >/usr/share/nginx/html/index.html
echo nginx02 test >/usr/share/nginx/html/index.html
#修改nginx主页内容,nginx01修改为nginx01 test,nginx02修改nginx02 test
curl 192.168.30.12
curl 192.168.30.13
#分别在俩台主机测试能否互相访问到定义的静态内容
ifconfig ens33:1 192.168.30.100 netmask 255.255.255.0
#2台nginx添加虚拟网卡lo:0并配置ip
route add -host 192.168.30.100 dev ens33:1
#添加路由192.168.30.100走ens33:1网卡
vim /etc/sysctl.conf
#编辑内核参数,添加内容
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
#保存退出后查看配置
sysctl  -p 
#查看内核参数是否配置完成

1、关闭防火墙  

 2、#安装epel扩展源,然后安装nginx并启动

 

 

#修改nginx主页内容,nginx01修改为nginx01 test,nginx02修改nginx02 test

 

 

#分别在俩台主机测试能否互相访问到定义的静态内容

 

 

#2台nginx添加虚拟网卡lo:0并配置ip

 

 

#添加路由192.168.217.101走ens33:1网卡

 

#编辑内核参数,添加内容

 

 #查看内核参数是否配置完成

 

4、实现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行安全机制添加#号注释掉
virtual_ipaddress {
        192.168.217.101
    }
#虚拟主机地址改为要配置的虚拟ip,可配置多个,若只写一个将模板的其他2个删除。
virtual_server 192.168.217.101 80 {
#虚拟ip地址改为配置的虚拟ip和web服务端口号
    delay_loop 6
    lb_algo rr
    lb_kind DR
#模式改为DR模式即直连模式
    persistence_timeout 50
    protocol TCP
 
    real_server 192.168.217.103 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.217.104 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.217.102:/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
显示内容:
TCP  192.168.217.101:80 rr persistent 50
  -> 192.168.217.103:80             Route   1      0          0         
  -> 192.168.217.104:80             Route   1      0          1
#查看有2个真实服务器的ip即可,注意二台真实服务器的80端口必须开着才能都检测到

 

lvs-master、lvs-slave执行:
#yum安装ipvsadm服务,即LVS负载均衡的真实服务名

 

#开启ipvsadm服务,此步骤启动服务报错

 

 

    1. #安装keepalived.x86_64

 

 #编辑内核文件

 

 

 #查看添加内核内容有则成功

 

#编辑配置文件

 

 

 

5、实现动态网页功能 

tomcat01、tomcat02执行:
yum install tomcat -y 
systemcat start tomcat
#安装并启动tomcat服务
cd /var/lib/tomcat/webapps
mkdir test
cd test
vim index.jsp
添加动态页面内容:
<%@ 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 name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlNamespaceAware="false">
            <Context docBase="/var/lib/tomcat/webapps/test"
#指定自己的tomcat页面访问文件路径
                path="" reloadable="true" />
systemctl restart tomcat
#重启服务在本机分别输入192.168.217.102:8080和192.168.217.103:8080测试能否访问到内容

  

 

 

6、 实现nginx反向代理

nginx01、nginx02执行:
vim /etc/nginx/conf.d/upstream.conf
#直接在nginx子配置文件夹中创建一个新的子配置文件,因为是yum安装无须在主配置文件中指定子配置文件
文件内容:
upstream nginxtest{
server 192.168.217.102:8080;
server 192.168.217.103: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进行处理
}

 

7、静态结果展示 

客户端访问虚拟ip192.168.217.101,每次访问页面在nginx01和nginx02中轮询

 

 

标签:ip,ipvsadm,192.168,nginx,反向,conf,80,搭建
From: https://www.cnblogs.com/yanjing998/p/17323229.html

相关文章

  • FFmpeg开发笔记(一)搭建Linux系统的开发环境
    对于初学者来说,如何搭建FFmpeg的开发环境是个不小的拦路虎,因为FFmpeg用到了许多第三方开发包,所以要先编译这些第三方源码,之后才能给FFmpeg集成编译好的第三方库。不过考虑到刚开始仅仅调用FFmpeg的API,不会马上去改FFmpeg的源码,因此只要给系统安装编译好的FFmpeg动态库,即可着手编写......
  • Nginx之数据流代理stream模块简介和使用
    转自 http://t.csdn.cn/RV4Hi一、stream模块简介  stream模块一般用于TCP/UDP数据流的代理和负载均衡,通过stream模块我们可以代理转发tcp报文。ngx_stream_core_module模块从1.9.0版开始提供。默认情况下,此模块不是构建的,应该使用–withstream配置参数启用它,即我们需要使用.......
  • nginx中的proxy_pass配置
    Nginx是最常用的反向代理工具之一,一个指令proxy_pass搞定反向代理,对于接口代理、负载均衡很是实用,但proxy_pass指令后面的参数很有讲究,通常一个/都可能引发一个血案。通常nginx配置proxy_pass指令时,如果proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的......
  • SpringCloud架构之注册中心/负载均衡组件搭建重点步骤
    我的GitHub地址:https://github.com/hiders1/cloud-demoGitHub的使用见:https://www.cnblogs.com/jinjiyese153/p/6796668.htmlVSC不见的话参考:https://blog.csdn.net/Ericjim/article/details/129215479 Nacos服务注册中心下载安装:1:Window系统远程下载GitHub地址:https://gi......
  • 手机利用termux搭建泰拉瑞亚服务器
    文章参考酷安:qsksl一、换源sed-i'[email protected]@mirrors.ustc.edu.cn/termux@'$PREFIX/etc/apt/sources.listpkgup-y换源卡住时按y+回车即可二、开服软件下载pkginstallmonowgetunziplibsqlite-ycd/data/data/com.termux/files/usr/libln-slib......
  • nginx自定义负载均衡及根据cpu运行自定义负载均衡
    转载请注明出处:1.nginx如何自定义负载均衡在Nginx中,可以通过配置文件自定义负载均衡策略。具体步骤如下:首先,在Nginx配置文件中定义一个upstream模块,并设置负载均衡策略和后端服务器列表,例如:upstreammyapp{serverbackend1.example.comweight=3;server......
  • 周立功arm linux教程,极速搭建周立功IMX287A ARM Linux开发环境
    原文:https://blog.csdn.net/weixin_35399228/article/details/116750301刚买了一套开发板,准备以后调试项目用,并且熟悉飞思卡尔这个平台。众所周知,周立功提供的资料是非常详细的,但难免存在疏漏的地方,在此,记录我玩这套IMX287A开发板的流程,由于有经验,所以搭建起来非常快,基本上半个......
  • Nginx常用配置
    前言Nginx是一款高性能的Web服务器和反向代理服务器,广泛应用于互联网领域。在使用Nginx时,我们需要对其进行配置,以满足不同的需求和场景。本篇博客将介绍Nginx的常用配置。静态文件服务静态文件服务是Nginx最基本的功能之一,它可以通过配置实现对静态资源的访问。例如:server{......
  • Hardbor私有仓库搭建
    准备工作:设置主机名 hostnamectlset-hostnameyuanbao.com设置时间同步yuminstallchrony-ysystemctlenable--nowchronyd关闭防火墙systemctlstopfirewalld&&systemctldisablefirewalld关闭SELINUXsetenforce0sed-i'/^SELINUX=/cSELINU......
  • vlookup 反向查找
    数组{1,0},1指成功(返回B1:B8),0指失败(返回A1:A8),if函数在内存中返回一个二维数组,第一列是姓名,第二列是学号    ......