深入浅出Nginx的基本原理和配置指南「负载均衡篇」

这篇具有很好参考价值的文章主要介绍了深入浅出Nginx的基本原理和配置指南「负载均衡篇」。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

6 nginx负载均衡

nginx负载均衡配置详解,深入浅出盘懂Nginx【运维初级实践篇】,nginx,负载均衡,运维

6.1 四层负载均衡

6.1.1 四层负载均衡与七层负载均衡的区别

四层负载均衡数据包是在底层就进行了分发,而七层负载均衡数据包则在最顶端进行分发,所以四层负载均衡的效率比七层负载均衡的要高。四层负载均衡不识别域名,而七层负载均衡识别域名。

6.1.2 四层负载均衡配置

注意stream模块的位置,要在http模块上方,同时proxy_pass的书写方式也有不同。

nginx负载均衡配置详解,深入浅出盘懂Nginx【运维初级实践篇】,nginx,负载均衡,运维

6.2 七层负载均衡

Nginx提供负载均衡的模块是:

ngx_http_proxy_module        proxy代理模块,用于把请求抛给后端的服务器节点,或是upstream服务器池
ngx_http_upstream_module    负载均衡模块,实现服务器的负载均衡节点配置,以及健康检查
6.2.1 nginx的负载均衡语法
 
http {
     upstream [你的负载均衡机制名称,随便设置一个就好] {
	 server [ip地址]:[端口值];
	 server [ip地址]:[端口值];
	 server [ip地址]:[端口值];
	 server [ip地址]:[端口值];
 }
 server {
	 listen [nginx监听端口];
	 server_name [head中的host对应的值]
	 location / {
	   proxy_pass http:// [你的负载均衡机制名称,对应上面upstream的值];
         }
    }
}
6.2.2 nginx的负载均衡策略
1.轮询(默认)

        每个请求按照请求时间顺序分配到不同的后端服务器,如果后端服务器挂了,则自动剔除

 2.权重

        指定轮询的频率,weight和访问率成正比,用于后端服务器性能不均匀的情况

 http {
	upstream ipHashLoadBalanceServer {
        ip_hash;
        server www.address1.com weight=3;// 或者ip+端口 , 不需要加入http/https前缀
        server www.address2.com; // default weight=1
        server www.address3.com;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://loadBalanceServer;
        }
    }
}
3.ip_hash

        客户端ip地址被用作hash key来判断客户端请求应该发送到哪个服务器,这种方法保证了来自相同客户端的请求总是发送到相同服务器(如果服务器可用的话

upstream myapp1 {
    ip_hash;
    server srv1.example.com;
    server srv2.example.com;
    server srv3.example.com;
}
4.最少连接

        nginx会尽量不让负载繁忙的应用服务器上负载过多的请求,相反的,会把新的请求发送到比较不繁忙的服务器。

upstream myapp1 {
        least_conn;
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
}
6.2.3 故障下线和备份服务设置
1.down

        假如有一台主机是出了故障,或者下线了,要暂时移出,那可以把它标为down,表示请求是会略过这台主机的。

upstream downServer {
        server www.address1.com; // 或者ip+端口 , 不需要加入http/https前缀
        server www.address2.com down;
}
2.backup

        backup是指备份的机器,相对于备份的机器来说,其他的机器就相当于主要服务器,只要当主要服务器不可用的时候,才会用到备用服务器。

upstream backupServer {
        server www.address1.com; // 或者ip+端口 , 不需要加入http/https前缀
        server www.address2.com backup;
}
3.max_fails和fail_timeout

        默认情况下,max_fails的值为1,表示的是请求失败的次数,请求1次失败就换到下台主机。另外还有一个参数是fail_timeout,表示的是请求失败的超时时间,在设定的时间内没有成功,那作为失败处理。

upstream backupServer {
        server www.address1.com max_fails=2; // 或者ip+端口 , 不需要加入http/https前缀
        server www.address2.com backup;
}
6.2.4 proxy_pass参数

参数

作用解释

proxy_set_header

设置反向代理向后端发送的http请求头信息,如添加host主机头部字段,让后端服务器能够获取到真实客户端的IP信息等

client_body_buffer_size

指定客户端请求主体缓冲区大小

proxy_connect_timeout

反向代理和后端节点连接的超时时间,也是建立握手后等待响应的时间

proxy_send_timeout

表示代理后端服务器的数据回传时间,在规定时间内后端若数据未传完,nginx会断开连接

proxy_read_timeout

设置Nginx从代理服务器获取数据的超时时间

proxy_buffer

设置缓冲区的数量大小

7 nginx的URL地址重写

7.1 rewrite

Nginx rewrire技术主要是实现URL地址重写,且支持正则表达式的规则。

语法

rewrite ^/(.*) http://192.168.178.134/$1 permanent;

rewrite是指令,开启一个跳转规则
^/(.*) 表示匹配所有,匹配成功后跳转到后面的url地址
$1 表示取出前面正则括号里的内容
permanent表示 301 重定向的标记
7.1.1 rewrite的结尾参数 flag标记

标记

解释a

last

规则匹配完成后,继续向下匹配新的Locaiton

break

本条规则完成匹配后,立即停止

redirect

返回302临时重定向,浏览器地址栏显示跳转后的URL

permanent

返回301永久重定向,浏览器地址显示跳转后的URL

last和break用于实现URL重写,浏览器地址栏不发生变化
redirect和permanent用于实现URL跳转,浏览器地址栏跳转新的URL

7.1.2 rewrite使用场景
  1. 地址跳转,用户访问URL时,会将其定向至一个新域名
  2. 协议跳转,将用户通过http的请求协议重新跳转至https协议
  3. URL静态化,减少动态URL对外暴露过多参数,减少服务器负担
7.1.3 案例
例:用户使用手机设备访问,则跳转定义好的文件夹下

nginx负载均衡配置详解,深入浅出盘懂Nginx【运维初级实践篇】,nginx,负载均衡,运维

网站维护期间,仅指定ip可以访问,其他ip跳转维护页面

nginx负载均衡配置详解,深入浅出盘懂Nginx【运维初级实践篇】,nginx,负载均衡,运维文章来源地址https://www.toymoban.com/news/detail-708877.html

7.2 return

7.2.1 http跳转https
server {
    listen       80;
    server_name  yzb.lsp.com;
    location / {
      return     301 https://$server_name$request_uri;
    }
}
server {
    listen       443 ssl;
    server_name  yzb.lsp.com;
    include /opt/env/nginx/servs/ssl.settings;
    location / {
      root /opt/apps/front-yzb;
      index serve.html index.html index.htm;
   }
    include /opt/env/nginx/servs/yzb.locations;
}

到了这里,关于深入浅出Nginx的基本原理和配置指南「负载均衡篇」的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【深入浅出Spring原理及实战】「夯实基础系列」360全方位渗透和探究Spring的核心注解开发和实现指南(Spring5的常见的注解)

    Spring 5.x中常见的注解包括@Controller、@Service、@Repository。当我们研究Spring Boot源码时,会发现实际上提供了更多的注解。了解这些注解对于我们非常重要,尽管目前可能还用不到它们。 注解 功能 @Bean 器中注册组件,代替来的标签 @Configuration 声明这是一个配置类,替换以前的配

    2024年02月16日
    浏览(46)
  • 深入浅出 -- 系统架构之负载均衡Nginx反向代理

    一、Nginx反向代理-负载均衡  首先通过 SpringBoot+Freemarker 快速搭建一个 WEB 项目:springboot-web-nginx,然后在该项目中,创建一个 IndexNginxController.java 文件,逻辑如下: 在该 Controller 类中,存在一个成员变量: port ,它的值即是从 application.properties 配置文件中获取 server.port 值。

    2024年04月12日
    浏览(57)
  • 深入浅出 -- 系统架构之负载均衡Nginx的性能优化

       到这里文章的篇幅较长了,最后再来聊一下关于 Nginx 的性能优化,主要就简单说说收益最高的几个优化项,在这块就不再展开叙述了,毕竟影响性能都有多方面原因导致的,比如网络、服务器硬件、操作系统、后端服务、程序自身、数据库服务等,对于性能调优比较感兴

    2024年04月14日
    浏览(51)
  • 深入浅出 -- 系统架构之负载均衡Nginx实现高可用

       线上如果采用单个节点的方式部署 Nginx ,难免会出现天灾人祸,比如系统异常、程序宕机、服务器断电、机房爆炸、地球毁灭....哈哈哈,夸张了。但实际生产环境中确实存在隐患问题,由于 Nginx 作为整个系统的网关层接入外部流量,所以一旦 Nginx 宕机,最终就会导致整

    2024年04月15日
    浏览(50)
  • 深入浅出推荐系统(一):推荐系统基本架构

    过去八九年在广告、生活服务、电商等领域从事大数据及推荐系统相关工作,近来打算对过去的工作做一个系统性的梳理。一方面帮自己查缺补漏、进行更深入的学习;另一方面也希望能通过博客结交同好,增进交流。 这一博客系列以介绍推荐系统为主,会少量涉及广告系统

    2023年04月26日
    浏览(60)
  • 论文解读:Bert原理深入浅出

    摘取于https://www.jianshu.com/p/810ca25c4502 任务1:Masked Language Model Maked LM 是为了解决单向信息问题,现有的语言模型的问题在于,没有同时利用双向信息,如 ELMO 号称是双向LM,但实际上是两个单向 RNN 构成的语言模型的拼接,由于时间序列的关系,RNN模型预测当前词只依赖前面出

    2024年02月11日
    浏览(46)
  • 深入浅出 Spring:核心概念和基本用法详解

    个人主页:17_Kevin-CSDN博客 收录专栏;《Java》 在 Java 企业级应用开发中,Spring 框架已经成为了事实上的标准。它提供了一种轻量级的解决方案,使得开发者能够更轻松地构建灵活、可扩展的应用程序。在本文中,我们将探讨 Spring 框架的一些核心概念和基本用法,以此更好地

    2024年03月20日
    浏览(57)
  • 深入浅出hdfs-hadoop基本介绍

    一、Hadoop基本介绍 hadoop最开始是起源于Apache Nutch项目,这个是由Doug Cutting开发的开源网络搜索引擎,这个项目刚开始的目标是为了更好的做搜索引擎,后来Google 发表了三篇未来持续影响大数据领域的三架马车论文: Google FileSystem、BigTable、Mapreduce开始掀起来了大数据的浪潮

    2024年01月24日
    浏览(56)
  • 深入浅出:Zookeeper的原理与实践

    在当今的信息时代,分布式系统的应用越来越广泛,而其中一个至关重要的组成部分就是Zookeeper。作为一个分布式协调服务,Zookeeper在保障分布式系统的一致性、可靠性和可用性方面发挥着不可替代的作用。本博客旨在深入浅出地探讨Zookeeper的原理与实践,帮助读者全面理解

    2024年04月11日
    浏览(46)
  • 深入浅出Java中参数传递的原理

    今天,想和大家聊聊关于java中的参数传递的原理,参数的传递有两种,值传递和引用传递。 值传递 :是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。 引用传递 :是指在调用函数时将实际参数的地址传递到

    2024年02月01日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包