百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

详解Nginx的动静分离及高可用集群

nanshan 2024-11-19 07:49 39 浏览 0 评论

动静分离

1. 什么是动静分离


Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和 静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用 Nginx 处理静态页面,Tomcat 处理动态页面。动静分离从目前实现角度来讲大致分为两种:

一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;

另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开。

通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使 浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资 源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可, 所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件, 不建议使用 Expires 来缓存),我这里设置 3d,表示在这 3 天之内访问这个 URL,发送 一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码 304,如果有修改,则直接从服务器重新下载,返回状态码 200。

2. 准备工作

在Linux 系统中准备 静态资源,用于进行访问。

www文件夹中 a.html

<h1>fengfanchen-test-html</h1>

image 中的 01.jpg


3. 具体配置

a. 在 nginx 配置文件中进行配置


4. 最终测试

a. 测试 image

http://208.208.128.122/image/
http://208.208.128.122/image/01.jpg 




b. 测试 www

http://208.208.128.122/www/a.html


Nginx 的高可用集群

1. 什么是nginx 高可用


配置示例流程:

  1. 需要两台nginx 服务器
  2. 需要keepalived
  3. 需要虚拟IP

2. 配置高可用的准备工作

  1. 需要两台服务器 208.208.128.122 和 208.208.128.85
  2. 在两台服务器安装 nginx(流程最上面有)
    第二台服务器的默认端口 改为 9001 ,运行并测试,如下:
  • 在两台服务器安装 keepalived
  • 2. 在两台服务器安装keepalived

    a)安装:

    第一种方式:命令安装

    yum install keepalived -y
    # 查看版本:
    rpm -q -a keepalived
    

    第二种方式:安装包方式(这里我使用这个)
    将压缩包上传至:/usr/feng/
    命令如下:

    cd /usr/feng/
    tar -zxvf keepalived-2.0.18.tar.gz
    cd keepalived-2.0.18
    ./configure
    make && make install
    

    b) 配置文件

    安装之后,在 etc 里面生成目录 keepalived,有文件 keepalived.conf 。
    这个就是主配置文件。
    主从模式主要在这个文件里配置。

    完成高可用配置(主从配置)

    a) 修改 keepalived.conf 配置文件

    修改/etc/keepalived/keepalivec.conf 配置文件

    global_defs { 
     notification_email { 
     acassen@firewall.loc 
     failover@firewall.loc 
     sysadmin@firewall.loc 
     } 
     notification_email_from Alexandre.Cassen@firewall.loc 
     smtp_server 208.208.128.122
     smtp_connect_timeout 30 
     router_id LVS_DEVEL 
    } 
     
    vrrp_script chk_http_port { 
     
     script "/usr/local/src/nginx_check.sh" 
     
     interval 2 #(检测脚本执行的间隔) 
     
     weight 2 
     
    } 
     
    vrrp_instance VI_1 { 
    	state MASTER # 备份服务器上将 MASTER 改为 BACKUP 
    	interface ens192 //网卡 
    	virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同 
    	priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小 
     advert_int 1 
     authentication { 
     auth_type PASS 
     auth_pass 1111 
     } 
     virtual_ipaddress { 
    		208.208.128.50 // VRRP H 虚拟地址 
     } 
    }
    

    b) 添加检测脚本

    在/usr/local/src 添加检测脚本

    #!/bin/bash
    A=`ps -C nginx –no-header |wc -l`
    if [ $A -eq 0 ];then
     /usr/local/nginx/sbin/nginx
     sleep 2
     if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
     killall keepalived
     fi
    fi
    

    c) 开启nginx 和 keepalived

    把两台服务器上 nginx 和 keepalived 启动 :
    启动 nginx:./nginx
    启动 keepalived:systemctl start keepalived.service


    85服务一样。

    4. 最终测试

    a)在浏览器地址栏输入 虚拟 ip 地址 192.168.17.50



    b)把主服务器(192.168.17.129)nginx 和 keepalived 停止,再输入 192.168.17.50



    注:需要C/C++ Linux服务器开发学习资料私信“资料”(资料包括C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg等),免费分享

    相关推荐

    实战派 | Java项目中玩转Redis6.0客户端缓存

    铺垫首先介绍一下今天要使用到的工具Lettuce,它是一个可伸缩线程安全的redis客户端。多个线程可以共享同一个RedisConnection,利用nio框架Netty来高效地管理多个连接。放眼望向...

    轻松掌握redis缓存穿透、击穿、雪崩问题解决方案(20230529版)

    1、缓存穿透所谓缓存穿透就是非法传输了一个在数据库中不存在的条件,导致查询redis和数据库中都没有,并且有大量的请求进来,就会导致对数据库产生压力,解决这一问题的方法如下:1、使用空缓存解决对查询到...

    Redis与本地缓存联手:多级缓存架构的奥秘

    多级缓存(如Redis+本地缓存)是一种在系统架构中广泛应用的提高系统性能和响应速度的技术手段,它综合利用了不同类型缓存的优势,以下为你详细介绍:基本概念本地缓存:指的是在应用程序所在的服务器内...

    腾讯云国际站:腾讯云服务器如何配置Redis缓存?

    本文由【云老大】TG@yunlaoda360撰写一、安装Redis使用包管理器安装(推荐)在CentOS系统中,可以通过yum包管理器安装Redis:sudoyumupdate-...

    Spring Boot3 整合 Redis 实现数据缓存,你做对了吗?

    你是否在开发互联网大厂后端项目时,遇到过系统响应速度慢的问题?当高并发请求涌入,数据库压力剧增,响应时间拉长,用户体验直线下降。相信不少后端开发同行都被这个问题困扰过。其实,通过在SpringBo...

    【Redis】Redis应用问题-缓存穿透缓存击穿、缓存雪崩及解决方案

    在我们使用redis时,也会存在一些问题,导致请求直接打到数据库上,导致数据库挂掉。下面我们来说说这些问题及解决方案。1、缓存穿透1.1场景一个请求进来后,先去redis进行查找,redis存在,则...

    Spring boot 整合Redis缓存你了解多少

    在前一篇里面讲到了Redis缓存击穿、缓存穿透、缓存雪崩这三者区别,接下来我们讲解Springboot整合Redis中的一些知识点:之前遇到过,有的了四五年,甚至更长时间的后端Java开发,并且...

    揭秘!Redis 缓存与数据库一致性问题的终极解决方案

    在现代软件开发中,Redis作为一款高性能的缓存数据库,被广泛应用于提升系统的响应速度和吞吐量。然而,缓存与数据库之间的数据一致性问题,一直是开发者们面临的一大挑战。本文将深入探讨Redis缓存...

    高并发下Spring Cache缓存穿透?我用Caffeine+Redis破局

    一、什么是缓存穿透?缓存穿透是指查询一个根本不存在的数据,导致请求直接穿透缓存层到达数据库,可能压垮数据库的现象。在高并发场景下,这尤其危险。典型场景:恶意攻击:故意查询不存在的ID(如负数或超大数值...

    Redis缓存三剑客:穿透、雪崩、击穿—手把手教你解决

    缓存穿透菜小弟:我先问问什么是缓存穿透?我听说是缓存查不到,直接去查数据库了。表哥:没错。缓存穿透是指查询一个缓存中不存在且数据库中也不存在的数据,导致每次请求都直接访问数据库的行为。这种行为会让缓存...

    Redis中缓存穿透问题与解决方法

    缓存穿透问题概述在Redis作为缓存使用时,缓存穿透是常见问题。正常查询流程是先从Redis缓存获取数据,若有则直接使用;若没有则去数据库查询,查到后存入缓存。但当请求的数据在缓存和数据库中都...

    Redis客户端缓存的几种实现方式

    前言:Redis作为当今最流行的内存数据库和缓存系统,被广泛应用于各类应用场景。然而,即使Redis本身性能卓越,在高并发场景下,应用于Redis服务器之间的网络通信仍可能成为性能瓶颈。所以客户端缓存...

    Nginx合集-常用功能指导

    1)启动、重启以及停止nginx进入sbin目录之后,输入以下命令#启动nginx./nginx#指定配置文件启动nginx./nginx-c/usr/local/nginx/conf/n...

    腾讯云国际站:腾讯云怎么提升服务器速度?

    本文由【云老大】TG@yunlaoda360撰写升级服务器规格选择更高性能的CPU、内存和带宽,以提供更好的处理能力和网络性能。优化网络配置调整网络接口卡(NIC)驱动,优化TCP/IP参数...

    雷霆一击服务器管理员教程

    本文转载莱卡云游戏服务器雷霆一击管理员教程(搜索莱卡云面版可搜到)首先你需要给服务器设置管理员密码,默认是空的管理员密码在启动页面进行设置设置完成后你需要重启服务器才可生效加入游戏后,点击键盘左上角E...

    取消回复欢迎 发表评论: