【Nginx】Nginx代理模式相关概念解释及Nginx安装

Nginx代理模式

Nginx 是一个高性能的HTTP和反向代理服务器,同时也支持IMAP/POP3代理服务。它可以在多种场景下使用,其中就包括正向代理和反向代理模式。

相关概念

反向代理 (Reverse Proxy)

在反向代理模式中,Nginx 通常位于网络的内部,作为客户端请求到达的第一个接触点。客户端(如Web浏览器)并不直接连接到后端服务器,而是将请求发送到 Nginx。Nginx 然后根据配置规则,将这些请求转发给内部网络中的适当服务器,并将响应返回给客户端。这种设置可以隐藏后端服务器的真实IP地址,提供额外的安全层,并且可以实现负载均衡、缓存等功能。

反向代理的主要用途包括:

  • 负载均衡:分发流量到多个后端服务器。
  • 安全:隐藏真实服务器,保护免受直接攻击。
  • 缓存:减少对后端服务器的请求,加速页面加载。
  • SSL 终止:处理加密和解密,减轻后端服务器负担。

正向代理 (Forward Proxy)

正向代理则是在客户端与外部网络之间的中介。当内部网络中的客户端需要访问外部资源时,它们会通过正向代理服务器发出请求。正向代理服务器可以检查并控制哪些请求被允许或拒绝。此外,它还可以用于缓存外部资源,以提高性能和节省带宽。

正向代理的主要用途包括:

  • 控制访问:限制内部用户对外部网络的访问。
  • 匿名性:隐藏客户端的真实IP地址。
  • 缓存:存储频繁访问的内容副本,减少重复下载。
  • 绕过过滤:在某些情况下,帮助用户访问被封锁的网站。

负载均衡(Load Balancing)

负载均衡是一种计算机网络技术,用于将工作负载分布到多个计算资源(如计算机、服务器、网络链路或其它资源)上。其目的是优化资源使用,最大化吞吐量,最小化响应时间,并确保没有单一资源过载。通过有效地分配任务,负载均衡可以提高系统的可靠性和可用性。负载均衡的工作原理:

负载均衡器位于客户端和服务器之间,作为流量的入口点。当一个请求到达时,负载均衡器根据预定义的算法选择一台后端服务器来处理这个请求。它会持续监控所有连接的服务器的状态,确保流量只被引导至健康的服务器。

常见的负载均衡算法

  1. 轮询 (Round Robin): 每个请求按顺序轮流分配给不同的服务器。
  2. 加权轮询 (Weighted Round Robin): 类似于轮询,但是每个服务器有一个权重值,权重越高的服务器获得更多的请求。
  3. 最少连接 (Least Connections): 将新请求发送给当前活动连接数最少的服务器。
  4. IP哈希 (IP Hash): 根据客户端的IP地址计算出一个哈希值,并始终将该客户端的请求发送到同一台服务器。
  5. URL哈希 (URL Hash): 类似于IP哈希,但基于URL的一部分来决定目标服务器。
  6. 响应时间 (Response Time): 选择响应时间最短的服务器。
  7. 随机选择 (Random Selection): 随机选择一台服务器。

安装与配置

下载 nginx 包后解压到 D 盘 nginx 文件夹下,双击应用程序 nginx.exe 运行(在任务管理器中可结束进程)

D:\nginx\conf 目录下 nginx.conf 文件配置

server {listen       80;server_name  127.0.0.1;location / {proxy_pass   http://testnginx;root   html;index  index.html index.htm;}
}

ip_hash 在 upstream 配置中的定义

upstream servertest {server 192.168.1.146:8080 down;server 192.168.1.146:8081 weight=3;server 192.168.1.146:8082;server 192.168.1.146:8083 backup;ip_hash;
}
  • down:表示当前 server 暂时不参与负载
  • Weight:默认为1,weight 越大,负载的权重就越大。
  • max_fails:允许请求失败的次数默认为1。当超过最大次数时,返回 proxy_next_upstream 模块定义的错误
  • fail_timeout:max_fails 次失败后,暂停的时间。
  • Backup:其它所有的非 backup 机器 down 或者忙的时候,请求 backup 机器。(压力最轻)

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

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

相关文章

Vue2: table加载树形数据的踩坑记录

table中需要加载树形数据,如图: 官网给了两个例子,且每个例子中的tree-props都是这么写的: :tree-props="{children: children, hasChildren: hasChildren}" 给我一种错觉,以为数据结构中要同时指定children和hasChildren字段,然而,在非懒加载模式下,数据结…

深度学习模型预测值集中在某一个值

深度学习模型,训练过程中,经常遇到预测的结果集中在某个值,而且在学习的过程中会变,样例如下。 主要有如下解决方案 1、更换relu ->tanh 或者其他激活函数 2、更改随机种子,估计是没有初始化好,或者调…

图书项目:整合SSM

步骤: pom文件:导包,写入静态资源导出配置,连接数据库 建包:controller dao/mapper pojo service 配置文件:mybatis-config.xml applicationContext.xml(Spring的配置文件) datab…

javacript中function (res) {}与箭头函数表达式(res) =>{}的区别

javacript中function (res) {}与(res) >{}的区别 function (res) {} 代码演示 let shape {name:长方形,say:function(){console.log(我是this.name)setTimeout(function(){console.log(3秒后输出我是: this.name); //this.name为undefined}, 3000)} }shape.sa…

Docker安装(Docker Engine安装)

一、Docker Engine和Desktop区别 Docker Engine 核心组件:Docker Engine是Docker的核心运行时引擎,负责构建、运行和管理容器。它包括守护进程(dockerd)、API和命令行工具客户端(docker)。适用环境&#…

【卡通风格的的登录界面】

卡通风格的的登录、注册界面模板&#xff0c;使用uni-app编写&#xff0c;直接复制粘贴即可。 废话不多说&#xff0c;代码如下&#xff1a; login.vue文件 <template><view class"content"><view class"login-form"><view class&quo…

【AI】最近有款毛茸茸AI生成图片圈粉了,博主也尝试使用风格转换生成可爱的小兔子,一起来探索下是如何实现的

应用名称&#xff1a;一键变身毛茸茸小兔子 体验地址&#xff1a;点击跳转体验 模型名称&#xff1a;Kolors&#xff0c;点击跳转 背景 Gitee AI最近发起了一个社群挑战赛。 如果最近你也没什么好点子&#xff0c;想练习又无从下手&#xff0c;怎么办呢&#xff1f; 没关系&a…

重学 Android 自定义 View 系列(十):带指针的渐变环形进度条

前言 该篇文章根据前面 重学 Android 自定义 View 系列(六)&#xff1a;环形进度条 拓展而来。 最终效果如下&#xff1a; 1. 扩展功能 支持进度顺时针或逆时针显示在进度条末尾添加自定义指针图片使用线性渐变为进度条添加颜色效果 2. 关键技术点解析 2.1 进度方向控制的…

Oracle 23ai 图形界面安装

新年的第一篇博客&#xff0c;展示下Oracle 23ai的图形化安装。 主要给大家看下界面&#xff0c;安装的过程与19c没什么不同。 安装前 安装Oracle Database Preinstallation RPM&#xff1a; sudo dnf install oracle-database-preinstall-23aioracle用户有了&#xff1a; …

跳转至系统设置下某个子模块 - 鸿蒙 Harmony

有时候遇到一些需要预授权系统权限才可访问的功能,可以通过如下方式先跳转至系统设置下的某个子页面进行配置,具体如下 code 所示参考: 具体跳转到设置的子设置页面如下也有注释,可供参考使用 /*** 访问系统设置: 子目录* */ static accessSystemSettingSubDirectory(uriKey?:…

el-table 实现纵向多级表头

为了实现上图效果&#xff0c;最开始打算用el-row、el-col去实现&#xff0c;但发现把表头和数据分成两大列时&#xff0c;数据太多时会导致所在格高度变高。但由于每一格数据肯定不一样&#xff0c;为保持高度样式一致&#xff0c;就需要我们手动去获取最高格的高度之后再设置…

2024年度总结答疑

大家好&#xff0c;我是大师兄。在2024年的最后一天&#xff0c;让我们一起来复盘总结&#xff0c;回顾我们在学习和工作中的能力提升、经验教训以及如何在未来做得更好。 过去一年&#xff0c;我们努力提升了学习和工作能力&#xff0c;学习了新的技术和知识&#xff0c;积极参…

flutter组件————Row和Column

Row和Column 在Flutter中&#xff0c;Row 和 Column 是两个非常常用的布局组件&#xff0c;它们用于按照水平或垂直方向排列子组件。 Row Row 组件是一个将子组件沿水平方向&#xff08;从左到右&#xff09;排列的控件。它通常用于创建一行中的多个小部件&#xff0c;比如文…

苹果解锁工具iToolab UnlockGo 中文安装版(附教程+补丁) 2024年6月ios17.4.1可用(记得点赞)解压密码请看文章!!! 评论区获取最新链接

UnlockGo 允许您非常轻松地绕过 iPhone 的密码并获得对设备的完全访问权限。它在以下场景中很有用。 在几分钟内删除 iPhone/iPad 上的各种锁定。 解锁 4 位/6 位密码、Touch ID 和 Face ID 删除没有密码的 iCloud 免费锁 无需密码即可从 iPhone/iPad/iPod 中删除 Apple ID…

[最佳方法] 如何将视频从 Android 发送到 iPhone

概括 将大视频从 Android 发送到 iPhone 或将批量视频从 iPhone 传输到 Android 并不是一件容易的事情。也许您已经尝试了很多关于如何将视频从 Android 发送到 iPhone 15/14 的方法&#xff0c;但都没有效果。但现在&#xff0c;通过本文中的这 6 种强大方法&#xff0c;您可…

driftingblues2

修改网卡配置信息 首先kali终端运行以下命令查看靶机ip 这里我们发现并没有查到靶机的ip&#xff0c;这时我们重启靶机 打开靶机&#xff0c;按下e键&#xff0c;进入到如下界面 将ro替换为rw signie init/bin/bash 替换完毕后&#xff0c;按下Ctrl键X键&#xff0c;进入如下…

数据挖掘——聚类

数据挖掘——聚类 聚类K-meansKNN VS K-meansK-Nearest Neighbors (KNN)K-means K中心算法PAM算法 K-modes算法——解决数据敏感的问题KMeans算法 ——解决初始点选择问题K-中心点层次方法AGNES算法——最小距离单链接全链接平均链接 聚类评估K均值和K中心点的优缺点层次化聚类…

Nginx - 整合lua 实现对POST请求的参数拦截校验(不使用Openresty)

文章目录 概述步骤 1: 安装 Nginx 和 Lua 模块步骤 2: 创建 Lua 脚本用于参数校验步骤 3: 配置 Nginx 使用 Lua 脚本写法二&#xff1a; 状态码写法三 &#xff1a; 返回自定义JSON复杂的正则校验 步骤 4: 测试和验证ngx.HTTP_* 枚举值 概述 一个不使用 OpenResty 的 Nginx 集…

虚拟机中的时统卡功能和性能调优

【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力&#xff0c;聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域&#xff0c;包含了应用使能套件、软件仓库、软件支持、软件适…

GXUOJ-算法-补题:22级《算法设计与分析》第一次课堂练习

2.最大子数组和 问题描述 代码解答 #include<bits/stdc.h> using namespace std; const int N1005; int sum,n,a[N]; int res-1;int result(){for(int i0;i<n;i){if(sum<0) suma[i];else{suma[i];resmax(res,sum);}}return res; } int main(){cin>>n;for(i…