nginx反向代理服务器及负载均衡服务配置

一、正向代理与反向代理

正向代理:是一个位于客户端和原始服务器(oricin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。

正向代理的典型用途是为在防火墙内的局域网客户端提供访问internet的途径。

正向代理一般是在客户端设置代理服务器,通过代理服务器转发请求,最终访问到目标服务器。

反向代理:反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源,反向代理服务器负责将请求转发给目标服务器。用户不需要知道目标服务器的地址,也无须在用户端作任何设定。

配置示例:

server {listen       80;server_name  example.com;location / {proxy_pass http://backend_servers;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}

上述配置中,listen指定了Nginx监听的端口,server_name指定了反向代理的域名。

location /表示将所有的请求都转发给后端服务器。proxy_pass配置后端服务器的地址,可以是IP地址或域名。proxy_set_header可以设置一些HTTP头信息,如Host和X-Real-IP等。

二、负载均衡

负载均衡是指将请求分发到多个后端服务器,以达到提高系统的性能和可用性的目的。Nginx支持多种负载均衡算法,如轮询、加权轮询、最少连接等。

配置示例:

upstream backend_servers {server 192.168.0.1:8080;server 192.168.0.2:8080;server 192.168.0.3:8080;server 192.168.0.4:8080;
}server {listen       80;server_name  example.com;location / {proxy_pass http://backend_servers;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}
Nginx支持以下几种负载均衡方式:
  • 轮询(Round Robin):这是默认的负载均衡方式。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
  • 权重(Weight):不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此Nginx允许指定每个服务器的处理能力。权重越高,分配的请求越多。
  • IP Hash:每个请求的IP的hash结果分配,每个访客固定访问一个后端服务器,可以解决session的问题。
  • 最少连接(Least Connections):优先分配给当前连接数最少的服务器,适用于请求处理时间相差较大的情况。
  • URL Hash:按照访问URL的hash结果来分配请求,使得每个URL定向到同一个后端服务器,可以在后端服务器生成缓存的情况下提高系统效率。

以上负载均衡方式中,轮询、权重和IP Hash是Nginx内置支持的,最少连接和URL Hash需要使用Nginx的第三方模块,如ngx_http_upstream_least_conn_module和ngx_http_upstream_hash_module。

(1)基于轮询的算法

原理是每一个请求按时间顺序逐一被分发到不同的应用服务器,如果接收请求的应用服务器挂了,并且请求超过最大失败次数max_fails(1次),则在失效时间fail_timeout(10秒)内不会再转发请求到该节点~

upstream defaultReverseProxyServer{server 192.168.0.1:8080; server 192.168.0.2:8080; 
}
(2)基于权重的算法

原理是每一个请求按权重被分发到不同的应用服务器,同样,如果接收请求的应用服务器挂了,并且请求超过最大失败次数max_fails(默认1次或可设置N次),则在失效时间fail_timeout(默认10秒,可设置N秒)内,不会再转发请求到该节点~

upstream weightReverseProxyServer{server 192.168.0.1:8080 weight=10 max_fails=2 fail_timeout=5s;server 192.168.0.2:8080 weight=5 max_fails=2 fail_timeout=5s;
}
(3)基于ip_hash的算法

原理是每一个请求按用户访问IP的哈希结果分配,如果请求来自同一个用户IP则固定这台IP访问一台应用服务器,该算法可以有效解决动态网页中存在的session共享问题。

upstream ipHashReverseProxyServer{ip_hash;server 192.168.0.1:8080;server 192.168.0.2:8080;
}

一般使用的是基于权重的算法,因为现在很多情况下都是集群部署,而且集群下的各个服务器资源大多都是不均匀的,资源高的则分配权重高一些,资源低的则分配权重低一些,这种情况使用基于权重的负载均衡算法,可以更高效的利用资源和提高并发处理能力~

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【excel密码】Excel工作表不能复制或移动

为什么excel文件打开之后,工作表里是可以编辑的,但是想要移动工作表或者复制、重命名等操作,这是什么原因?其实这是因为设置了工作簿保护,设置了保护的工作簿无法对整张工作表进行操作。 想要取消这种保护,…

Exploring the Limits of Masked Visual Representation Learning at Scale论文笔记

论文名称:EVA: Exploring the Limits of Masked Visual Representation Learning at Scale 发表时间:CVPR2023 作者及组织:北京人工智能研究院;华中科技大学;浙江大学;北京理工大学 GitHub:http…

CMakeLists.txt

源码结构 生成可执行程序 # CMake最小版本号 cmake_minimum_required(VERSION 3.15.0)#增加-stdc11 set(CMAKE_CXX_STANDARD 11)#设置工程名称 project(calculate)#[[ #方法一&#xff1a;添加源码文件 #aux_source_directory(< dir > < variable >) #dir&#xf…

【SassVue】仿网易云播放器动画

简介 仿网易云播放动画 效果图&#xff08;效果图&#xff09; 最终成品效果 动画组件 src/components/music/MusicPlayAnimate.vue <template><div class"music-play"><div></div><div></div><div></div></di…

【19】Kotlin语法进阶——Kotlin高阶函数的应用

提示&#xff1a;此文章仅作为本人记录日常学习使用&#xff0c;若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、高阶函数的应用1.1 SharedPreferences的简化 一、高阶函数的应用 高阶函数非常适合用来简化各种API的调用&#xff0c;本章我们将运用高阶函数的知识来简化…

【Image】GAN的超详细解释(以及奇怪的问题)

GAN原理 工作流程 下面是生成对抗网络&#xff08;GAN&#xff09;的基本工作原理 在GAN的架构中&#xff0c;有两个关键的组件&#xff1a;生成器&#xff08;Generator&#xff09;和鉴别器&#xff08;Discriminator&#xff09;。 生成器&#xff08;Generator&#xff0…

nodejs微信小程序+python+PHP的旅游景点推荐系统-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

在x64上构建智能家居(home assistant) (六) 安装Node-RED Companion Integration

点击HACS 搜索node-red 右侧单击后点击安装 安装完成后, 选设备

<meta name=“Keywords“ content=““ >、<meta name=“Description“ content=““ > 等用法解释

今天在看网站代码&#xff0c;发现类似<meta name"Keywords" content"" >、<meta name"Description" content"" >这样的写法&#xff0c;不知道具体代表什么意思&#xff0c;于是上网搜了一下&#xff0c;下面是在网上找到…

C++中的存储类及其实例

文章目录 0. 语法1. 自动存储类自动存储类对象的属性自动存储类的例子 2. 外部存储类extern存储类对象的属性extern存储类的例子 3. 静态存储类静态存储类的属性静态存储类的例子 4. 寄存器存储类寄存器存储类对象的属性寄存器存储类例子 5. 可变&#xff08;mutable&#xff0…

HBase 超大表迁移、备份、还原、同步演练手册:全量快照 + 实时同步(Snapshot + Replication)不停机迁移方案

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

R语言绘图教程汇总 | 2023

2023年总结 2023年即将结束&#xff0c;我们即将迎来2024年。2023年&#xff0c;我们做了什么呢&#xff1f;&#xff1f;这个是个值得深思的问题…? 12月份是个快乐且痛苦时间节点。前一段时间&#xff0c;单位需要提交2023年工作总结&#xff0c;真的是憋了好久才可以下笔…