02_初识Nginx

文章目录

  • 一、基础知识
    • 1.1 什么是代理服务器
    • 1.2 正向代理概述
    • 1.3 反向代理概述
    • 1.4 负载均衡
    • 1.5 动静分离
  • 二、Nginx
    • 2.1 Nginx是什么
    • 2.2 Nginx的特点
    • 2.3 Nginx负载均衡策略
    • 2.4 Nginx的Master-Worker模式
  • 参考链接

一、基础知识

1.1 什么是代理服务器

在最简单的场景下,客户端与目标服务器直接交互,客户端向目标服务器发送请求并接收响应,目标服务器从客户端接收请求并返回响应。

在某些场景下,会在客户端和目标服务器之间加一个中间服务器,此时客户端和服务器之间的交互需要经过这个中间服务器来完成,这个中间服务器就是代理服务器。

当中间服务器代客户端发送请求和接收响应时被称为正向代理,当中间服务器代目标服务器接收请求并返回响应时被称为反向代理。

1.2 正向代理概述

正向代理中的代理服务器是客户端方设置的,对目标服务器是透明的,目标服务器不知道真正的访问者。

正向代理用途:

  • 隐藏客户端真实ip。
  • 突破访问限制,如通过代理服务器翻墙(科学上网)。

1.3 反向代理概述

反向代理中的代理服务器是目标服务器方设置的,对客户端是透明的,访问方不知道访问的是代理服务器。

反向代理用途:

  • 隐藏服务器真实ip。
  • 负载均衡:反向代理服务器根据真实服务器的代理情况,将客户端请求分发到不同的真实服务器上,实现负载均衡。
  • 提供安全保障:反向代理服务器可以作为应用层防火墙,为网站提供对基于web的攻击行为(例如DoS/DDoS)的防护,更容易排查恶意软件等。还可以为后端服务器统一提供加密和SSL加速(如SSL终端代理),提供HTTP访问认证等。

1.4 负载均衡

将请求分发到多个服务器上,以降低单个服务器的负载。在分发请求时,尽量将请求均匀分发到不同的服务器上,让各个服务器的负载相近,即负载均衡。

1.5 动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。

静态页面:指网页的内容在被上传到服务器之后就固定不变,每个访问者的看到的内容都是一样的。这类页面的HTML代码是预先编写好的,不会根据用户请求或时间变化而改变。

动态页面:指其内容是在用户请求时由服务器根据程序或数据库中的数据动态生成的网页。这意味着不同的用户在不同时间访问同一网址可能会看到不同的内容。

二、Nginx

2.1 Nginx是什么

Nginx是一个HTTP反向代理web服务器

2.2 Nginx的特点

  • 轻量级的,占用内存很小。
  • 高性能的,并发能力很强(支持高达5W并发量)。
  • 提供了IMAP、POP3、SMTP服务,可作为电子邮件代理服务器。
  • 支持热部署,启动简单,运行稳定。

2.3 Nginx负载均衡策略

  • 随即:随机选择一台后端服务器处理请求。
  • 轮询:默认策略。将请求按顺序逐一分配给后端服务器。
  • 权重:在轮询的基础上,为每台服务器设置一个权重值,权重较高的服务器将获得更多的请求。这种方式适合服务器配置不均等的场景,给配置好、性能高的服务器配置更大的权重,以处理更多的请求。
  • 最少连接:Nginx Plus版本支持此策略。Nginx会将请求分发给当前活动连接数最少的服务器,这有助于更均衡地分摊服务器负载,特别是在服务器配置相近但处理能力有波动的情况下。
  • IP哈希:根据客户端的IP进行哈希运算,确保来自同一IP的请求总是被转发到同一台后端服务器。这种方式可以实现会话的粘滞性,即用户会话在同一次访问中不会因为负载均衡而切换服务器(这样需要重新进行身份认证),适用于需要保持会话状态的场景。
  • URL哈希:根据请求的URL进行哈希运算,确保相同URL的请求总是被发送到同一台服务器。这有助于提高缓存效率和减少数据库的压力,适用于内容分发网络(CDN)或静态资源服务器。
  • Fair:考虑服务器的响应时间、负载情况等参数,试图更加公平地分配请求。它会优先选择响应时间短、负载低的服务器,但需安装额外的第三方模块。

2.4 Nginx的Master-Worker模式

Master进程作为控制进程,有且只有一个,不处理实际的客户端请求,负责将请求分发给Worker进程来处理。

Worker进程是负责处理请求工作进程,是由Master进程通过fork()系统调用创建的子进程,可以有多个,一般和CPU核心数相同,以充分利用计算资源。

使用Master-Worker模式的主要好处如下:

  • 充分利用CPU的多核资源。
  • Master进程与Worker进程分离,即使某个Worker进程因为错误或异常崩溃,也不会影响到其他Worker进程的正常运行,Master进程会自动检测到异常并重新启动新的Worker进程,保证服务的连续性。
  • 在Master-Worker模式的基础上使用异步非阻塞的事件驱动模型,每个Worker进程可以同时处理数千个并发连接,而无需为每个连接创建线程,大大提高了并发处理能力。

参考链接

详解正向代理与反向代理
Nginx详解(一文带你搞懂Nginx)
8分钟带你深入浅出搞懂Nginx

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

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

相关文章

Linux安装gpu驱动

安装rpm包 进入官网 ,选择机器的配置和环境。 下载完rpm之后,运行下面的命令。 i) sudo rpm -i nvidia-driver-local-repo-rhel8-550.54.15-1.0-1.x86_64.rpm ii) sudo dnf clean all iii) sudo dnf -y module install nvidia-driver:latest-dkms 安…

数据中心监控管理的实践方案

数据中心是信息存储和处理的核心,扮演着至关重要的角色2。然而,随着数据量的迅速增长,数据中心的监控和管理也变得愈发复杂和重要。保障数据中心的高效运作和安全性,依靠传统的管理方式远远不够。 实时监控数据中心的各项指标&am…

2024/5/30

In recent weeks, Target and Aldi have broadcast price cuts on thousands of items, while Walmart unveiled a new private label lineup of quality “chef-inspired food” mostly in the $5-and-under range. The shift comes as U.S. consumers have been signaling th…

煤矿塌陷位移监测站-全天候监测

TH-WY1煤矿塌陷位移监测站,作为矿山安全监测系统的重要组成部分,其设计、构建和功能均针对煤矿塌陷等地质灾害的实时监测与预警。 煤矿塌陷位移监测站,简称位移监测站,是一种利用先进传感器和仪器设备,对煤矿及周边区…

QML信号连接到c++的槽函数(五)

文章目录 前言一、QML Signal and Handler Event System二、QML信号连接到c++的槽函数代码实例1. 创建一个QML 工程2. 用C++ 实现一个QML Types3. 代码实例4. 运行结果总结参考资料前言 本文主要介绍,如何将QML 中的信号连接到C++ 中的槽函数 软硬件环境: 硬件:PC 软件:wi…

react 使用 富文本编辑器并支持MD,同时支持<Form.Item/>的可控输入

1.分析 <Form.Item label"id" name"id" hidden><Input /> </Form.Item>在react ant 使用中&#xff0c;我们可以看到&#xff0c;Input 输入变化后&#xff0c;值会自动绑定到form实例上&#xff0c;同时&#xff0c;form set值以后&am…

如何用行列视(RCV)获取指标测点当前值

行列视&#xff08;RCV&#xff09;是一款面向生产型企业的综合性数据应用系统&#xff0c;它专注于解决生产领域的指标治理、指标整合以及报表可视化等问题。该系统提供了生产指标统计、指标治理、生产数据整合、生产报表制作以及基于表格的数据分析等一整套功能。因此&#x…

以hive metastore报错举例,远程调试hadoop服务

项目场景&#xff1a; CDH集群CM切换hive元数据库报错&#xff1a; com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at…

设计模式详解(八):外观模式——Facade

目录导航 什么是外观模式现实生活类比实战示例门面模式的好处门面模式源码举例 什么是外观模式 外观模式的英文名是Facade&#xff0c;意思是the front of a building&#xff0c;即建筑物的正面&#xff08;门面&#xff09;&#xff0c;我个人更喜欢翻译成门面模式。门面模式…

步进电机噪音大?抖动厉害?-TMC4361步进闭环方案轻松解决

步进电机的闭环控制&#xff0c;实现与伺服电机功能媲美及超越的特点。在电机控制过程中如果想要高效、更高精度以及绝对的可靠性&#xff0c;我们为您推荐在无传感器及将体积做到最小的更高性价比的驱动方案。 我们都知道&#xff0c;在步进电机无反馈时&#xff0c;电机的高…

【刷题(16)】子串

一 子串基础 二 和位K的子数组 1 题目 2 解题思路 前缀和哈希&#xff08;两数之和&#xff09; 假如存在区间[left,right]&#xff0c;使得在[left,right]这个区间的子数组的和为k。换句话说&#xff0c;就是前right项和减去前left-1项和等于k&#xff0c;即前left-1项和等…

力扣 287. 寻找重复数

给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 &#xff0c;返回 这个重复的数 。你设计的解决方案必须 不修改 数组 nums 且只用常量…

【机器学习】——驱动智能制造的青春力量,优化生产、预见故障、提升质量

目录 一.优化生产流程 1.1 数据收集 1.2 数据预处理 1.3 模型训练 1.4 优化建议 1.5 示例代码 二.预测设备故障 2.1 数据收集 2.2 数据预处理 2.3 模型训练 2.4 故障预测 2.5 示例代码 三.提升产品质量 3.1 数据收集 3.2 数据预处理 3.3 模型训练 3.4 质量提升…

07C回调函数

C零碎语法 目录 文章目录 C零碎语法流程1.声明一个函数指针2.定义回调函数3.注册回调函数 应用4.事件回调5.同步回调函数6.异步回调函数 流程 1.声明一个函数指针 uint8_t (*p_CallbackFunc)(void);2.定义回调函数 重要的是要注意回调函数只是一个函数。 由于它的使用方式(…

Python3基本语法:深度探索与实用指南

Python3基本语法&#xff1a;深度探索与实用指南 在编程的浩瀚星空中&#xff0c;Python3以其独特而强大的语法体系&#xff0c;成为无数开发者的得力助手。本文将从四个方面、五个方面、六个方面和七个方面对Python3的基本语法进行深度剖析&#xff0c;旨在为读者提供一个全面…

前端项目如何排查是否使用第三方.ttf

要在前端项目中排查是否使用了第三方 .ttf 字体文件&#xff0c;可以采取以下步骤&#xff1a; 检查 HTML 和 CSS 文件&#xff1a; 在 HTML 文件中搜索 <link> 标签或 <style> 标签内的 font-face 声明。在 CSS 文件中搜索 font-face 声明&#xff0c;特别是 src …

Jira的原理及应用详解(一)

本系列文章简介&#xff1a; 在当今快速发展的软件开发和项目管理领域&#xff0c;有效的团队协作和精确的项目进度追踪是确保项目成功的关键。Jira作为一款广受欢迎的项目和问题追踪工具&#xff0c;以其强大的功能、灵活的定制性以及卓越的用户体验&#xff0c;赢得了全球众多…

leetCode.90. 子集 II

leetCode.90. 子集 II 题目思路 代码 class Solution { public:vector<vector<int>> res;vector<int> path;vector<vector<int>> subsetsWithDup(vector<int>& nums) {// 先排序&#xff0c;让有相同元素的都放到一起sort(nums.begi…

深入理解 org.springframework.web.servlet.AsyncHandlerInterceptor

在Spring MVC框架中&#xff0c;AsyncHandlerInterceptor 是一个用于异步处理请求的关键接口&#xff0c;它扩展了标准的 HandlerInterceptor 接口&#xff0c;专为异步请求处理设计。通过实现这个接口&#xff0c;开发者可以介入到请求处理的不同阶段&#xff0c;执行自定义逻…

非计算机行业的人,如何使用大模型进行自媒体创作

对于非计算机行业的人来说&#xff0c;使用大模型进行自媒体创作可能需要一些技术支持或合作伙伴的帮助。但是学习门槛只要找到人就能够快速打破&#xff0c;因为你需要的不是掌握原理&#xff0c;而是熟练应用&#xff0c;为目前的应用场景提高效率甚至创造一个新的场景。以下…