深入了解Nginx:高性能的开源Web服务器与反向代理

news2024/9/19 10:39:46

一、Nginx是什么

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,也可以作为负载均衡器和HTTP缓存服务器使用。它采用事件驱动、异步非阻塞的处理方式,能够处理大量并发连接和高流量负载,同时保持低内存消耗和高性能。在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。Nginx支持热部署,启动简单,可以做到7*24不间断运行,几个月都不需要重新启动。中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

二、Nginx的反向代理(扩展:正向代理) 

首先,看一张关于正向代理和反向代理的图片 

 

正向代理(Forward Proxy)和反向代理(Reverse Proxy)是网络代理服务器的两种常见类型,它们在网络通信中起到不同的作用。

  1. 正向代理(Forward Proxy): 正向代理是位于客户端和目标服务器之间的代理服务器。当客户端需要访问互联网上的资源时,它发送请求给正向代理服务器,然后由代理服务器代表客户端向目标服务器发送请求,并将响应返回给客户端。

主要特点和用途:

  • 客户端感知不到代理服务器的存在,它只知道和代理服务器进行通信。
  • 正向代理常用于加密和保护客户端的隐私,隐藏客户端的真实IP地址,以及访问被限制的资源。
  • 举例:在企业网络中,如果员工需要访问互联网资源,但是企业设置了防火墙或代理服务器,那么员工可以通过正向代理来访问互联网,代理服务器会代表员工发起请求。
  1. 反向代理(Reverse Proxy): 反向代理是位于目标服务器和客户端之间的代理服务器。当客户端发送请求到反向代理服务器时,代理服务器会根据一定的规则和配置,将请求转发给后端的目标服务器,并将目标服务器返回的响应返回给客户端。

主要特点和用途:

  • 客户端不知道真实的目标服务器,它只与反向代理服务器进行通信。
  • 反向代理常用于负载均衡、缓存、SSL加密和安全性控制等。
  • 举例:在Web应用部署中,反向代理服务器可以作为前端服务器,将客户端的请求转发给多个后端服务器,实现负载均衡和提高系统的性能和可用性。

 三、Nginx的负载均衡

什么是负载均衡?

负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

简单来说就是:现有的请求使服务器压力太大无法承受,所有我们需要搭建一个服务器集群,去分担原先一个服务器所承受的压力,那现在我们有ABCD等等多台服务器,我们需要把请求分给这些服务器,但是服务器可能大小也有自己的不同,所以怎么分?如何分配更好?

Nginx给出来三种关于负载均衡的方式:

轮询法(默认方法):
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
适合服务器配置相当,无状态且短平快的服务使用。也适用于图片服务器集群和纯静态页面服务器集群。


weight权重模式(加权轮询):
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的
情况。
这种方式比较灵活,当后端服务器性能存在差异的时候,通过配置权重,可以让服务器的性能得到充分发挥,有效利用资源。weight和访问比率成正比,用于后端服务器性能不均的情况。权重越高,在被访问的概率越大


ip_hash:
上述方式存在一个问题就是说,在负载均衡系统中,假如用户在某台服务器上登录了,那么该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样显然是不妥的。
我们可以采用ip_hash指令解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

四、Nginx的动静分离

Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术。动静分离技术其实是采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项针对PHP的动静分离:静态页面交给Nginx处理,动态页面交给PHP-FPM模块或Apache处理。在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式。目前,通过使用Nginx大大提高了网站的响应速度,优化了用户体验。

 

五、Nginx相关地址

源码:nginx – nginx

官网:nginx news

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

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

相关文章

推荐试试这个简单好用的手机技巧

技巧一:一键锁屏 除了按住手机电源键进行锁屏外,还有其他一些快捷方法可以实现锁屏操作。 对于苹果手机用户,可以按照以下步骤进行设置: 1.打开手机的设置应用,通常可以在主屏幕或应用列表中找到该图标。 2.在设置…

chatgpt赋能python:Pythonunittest跳过用例:使用unittest中跳过测试用例的方法

Python unittest 跳过用例:使用unittest中跳过测试用例的方法 如果你正在开发一个Python项目,你可能已经使用了Python的unittest模块来编写并运行测试用例。在编写测试用例时,有些情况下你可能不想运行某些测试用例,这时就需要使…

Window10安装SQL Server

一、安装SQL Server 1、进入官网根据个人所需下载对应版本即可,本文是基于SQL Server 2022 Express的安装过程 SQL Server 下载 | Microsofthttps://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2、下载完毕,运行安装指引程序 如若不熟悉…

LC-3机器码编程实验 求成绩等级

一、实验目的 分析和理解指定的需解决问题。利用LC-3的汇编代码设计实现相关程序。通过LC-3仿真器调试和运行相关程序并得到正确的结果。 二、实验内容 对学生的成绩使用数组进行排序。 背景:一位老师需要你帮忙决定学生的成绩,她想要根据学生分数在…

【分立元件】MOSFET如何用于同步整流

在电力电子中我们会使用二极管做开关,当二极管导时,相当于开关闭合,当二极管截止时,相当于开关断开。但是二极管在导通时的管压降在低压电源电路中是一个损耗来源,所以一般我们首选使用的是肖特基二极管,因为肖特基二极管的管压降比较低。 如下所示为非同步BUCK电源拓朴…

小黑坐等政审,论文成果毕业事项基本提交,着手眼睛手术明天准备体检然后出发独自夜爬华山的leetcode之旅:81. 搜索旋转排序数组 II

去除相等的二分法 class Solution:def search(self, nums: List[int], target: int) -> bool:# 数组长度n len(nums)# 双指针left 0right n-1# 二分法迭代while left < right:mid (left right) // 2if nums[mid] target:return Trueif nums[left] nums[mid]:left…

原来CSS的登录界面可以变得这么好看

个人名片&#xff1a; &#x1f60a;作者简介&#xff1a;一名大一在校生&#xff0c;web前端开发专业 &#x1f921; 个人主页&#xff1a;几何小超 &#x1f43c;座右铭&#xff1a;懒惰受到的惩罚不仅仅是自己的失败&#xff0c;还有别人的成功。 &#x1f385;**学习目…

Python之将日志写入到文件(二十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

【MySQL 数据库】4、MySQL 事务学习

目录 一、事务简介二、事务相关 SQL 语句(1) 事务提交方式(2) 开启、提交、回滚事务 三、事务的四大特性四、并发事务问题五、事务的隔离级别 一、事务简介 二、事务相关 SQL 语句 (1) 事务提交方式 # 查看当前数据库事务的提交方式 # 1: 自动提交 # 0: 手动提交 select autoc…

解决:在单项目组件里面引入 base.scss/ base.less 等的外部文件不成功的问题

1、问题展示&#xff1a; 其一、问题描述&#xff1a; 在单文件组件里面使用封装在 base.scss 或 base.less 里面的样式用法一直不成功&#xff1b; 其二、代码&#xff1a; // 虽然已经标明了用的是 scss 的语法&#xff0c;但是页面调用 .scss 里的 style 样式还是不成功&a…

【Android学习】Android studio环境搭建-解决下载gradle慢加载mainfest.xml慢的问题

转载&#xff1a;https://blog.csdn.net/qq_31881469/article/details/78646406/ 目录 1、解决网络连接问题 &#xff08;1&#xff09;问题描述 &#xff08;2&#xff09;方法步骤 2、解决内存吃紧问题 &#xff08;1&#xff09;问题描述 &#xff08;2&#xff…

chatgpt赋能python:Python的SEO优化

Python的SEO优化 介绍 Python是一种高级编程语言&#xff0c;旨在提高开发人员的生产力和代码可读性。在过去的10年中&#xff0c;Python已迅速成为最受欢迎的编程语言之一&#xff0c;具有广泛的应用领域&#xff0c;包括数据科学、机器学习、人工智能、网络编程和Web开发。…

chatgpt赋能python:Python集合的差集

Python集合的差集 Python是一门强大的动态语言&#xff0c;不仅应用于广泛的领域&#xff0c;而且它还拥有非常丰富的数据结构。Python中的集合(set)是一种无序、不重复元素的结构&#xff0c;常用于去重&#xff0c;检查成员等操作。 在Python中&#xff0c;可以使用"-…

Java面试知识点(全)-分布式算法- ZAB算法

Java面试知识点(全) 导航&#xff1a; https://nanxiang.blog.csdn.net/article/details/130640392 注&#xff1a;随时更新 研究zookeeper时&#xff0c;必须要了解zk的选举和集群间个副本间的数据一致性。 什么是 ZAB 协议&#xff1f; ZAB 协议介绍 ZAB 协议全称&#xf…

docker安装mysql8.0.33

1 从docker仓库中拉去mysql 8.0 docker pull mysql:8.0如果使用 docker pull mysql 默认拉取的是最新版本的mysql 上面我拉去的是8.0的版本&#xff0c;最后拉取过来的是8.0.33 如果有想要指定的版本&#xff0c;可以直接写指定版本&#xff0c;如&#xff1a; docker pull my…

Python速查表;腾讯大佬的AIGC设计应用汇总;这个世界需要10亿开发者;67个最常用AI工具清单 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 『一份必收藏的 Python 3 速查表』可运行代码中文注释 随着AIGC浪潮的兴起&#xff0c;越来越多小伙伴尝试着使用 GPT 类工具开发小程…

如何通过提高技能来克服 IT 技能差距

有时招聘很容易&#xff0c;你发布了职位描述&#xff0c;然后突然被热切的、合格的候选人淹没了。 特别是对于技术职位&#xff0c;招聘前景从未如此黯淡。谈论信息技术 (IT) 人才缺口是不可避免的&#xff0c;并且有充分的理由&#xff1a;根据研究&#xff0c;73% 的企业领…

chatgpt赋能python:Python%2:优化你的代码

Python %2&#xff1a;优化你的代码 Python是一门强大的编程语言&#xff0c;被广泛应用于数据分析、机器学习、Web开发等领域。在Python的语法中&#xff0c;有一个运算符%用于格式化字符串&#xff0c;在本篇文章中&#xff0c;我们将聚焦于%2的应用&#xff0c;以帮助读者优…

三层交换机

管理vlan 远程连接一个二层交换机&#xff0c;由于二层交换机不能配IP地址&#xff0c;所以我们使用SVI交换虚拟接口配置一个IP地址来远程连接二层交换机。svi接口可以配置ip地址&#xff0c;出厂存在mac地址&#xff0c;用于远程登陆管理该设备&#xff0c;该接口默认在vlan1…

如何在华为OD机试中获得满分?Java实现【最多提取子串数目】一文详解!

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: 华为OD机试攻略&#xff1a;Java实现并讲解2022&2023真题 文章目录 1. 题目描述2. 输入描述…