当前位置: 首页 > article >正文

技术栈1:nginx基础入门

目录

1.nginx概述

2.正向代理与反向代理

3.负载均衡

4.动静分离

5.nginx反向代理配置


1.nginx概述

Nginx (engine x)是一个高性能的HTTP和反向代理Web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日

Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、网易、腾讯、淘宝等

Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率

2.正向代理与反向代理

正向代理(Forward Proxy)是代理服务器的一种,用于代理客户端(如电脑、手机)向外部服务器发出的请求。其主要作用是帮助客户端访问外部资源,隐藏客户端的IP地址,并可用于加速、过滤内容或实现网络访问控制。正向代理的工作原理如下:

  1. 客户端发送请求到代理服务器
  2. 代理服务器接收到请求后,代表客户端向目标服务器发出请求
  3. 目标服务器将响应返回给代理服务器
  4. 代理服务器将响应内容返回给客户端

在这种模式下,目标服务器通常不知道客户端的真实IP地址,它只知道来自代理服务器的请求。因此,正向代理常用于访问受限的资源(例如访问外网)、提高安全性、或加速网络访问。典型的应用场景包括:

  • 科学上网:正向代理服务器帮助用户访问受地理位置限制的内容
  • 缓存:将一些常用资源缓存到代理服务器,提升访问速度
  • 匿名访问:代理服务器隐藏客户端真实IP,提高隐私性

反向代理(Reverse Proxy)是一种代理服务器,位于客户端和服务器之间,用于代理客户端对服务器的请求。与正向代理不同,反向代理代理的是服务器端而不是客户端。其主要功能是隐藏服务器的真实地址,提升系统的性能、安全性和可扩展性。反向代理的工作原理如下:

  1. 客户端向反向代理服务器发送请求
  2. 反向代理服务器接收到请求后,判断或选择适当的后端服务器,将请求转发过去
  3. 后端服务器处理请求,并将响应发送回反向代理服务器
  4. 反向代理服务器将响应内容返回给客户端

在这种模式下,客户端并不知道具体是哪台服务器提供了服务,而只看到反向代理服务器的地址。反向代理服务器是代表后端服务器来应答客户端请求的。反向代理的主要应用场景包括:

  • 负载均衡:反向代理将客户端请求分配到多台服务器上,均衡各服务器的负载,提升系统的性能和处理能力
  • 安全防护:通过隐藏后端服务器的真实IP地址,反向代理可以保护内部网络免受直接的攻击
  • 缓存加速:反向代理缓存后端服务器的响应,减少重复请求带来的负担,提高访问速度
  • SSL终结:反向代理处理客户端的SSL加密请求,降低后端服务器的计算负担

3.负载均衡

普通的请求/响应模式是比较常见且成本较低的方式,但是当并发请求很多的时候,容易导致服务器过载,可以通过负载均衡技术解决,负载均衡(Load Balancing)通过合理地分配网络流量到多台服务器上,以避免某一台服务器过载,从而提高系统的响应速度、稳定性和处理能力。负载均衡的实现方式包括:

  • DNS负载均衡:通过将域名解析为多个服务器的IP地址,客户端随机选择一个IP来访问。
  • 硬件负载均衡:使用专门的负载均衡设备(如F5等),具有高性能和复杂的负载分配策略。
  • 软件负载均衡:使用软件(如Nginx、HAProxy等)在服务器集群中分配流量,灵活、可配置。

常见的负载均衡算法有:

  • 轮询:按顺序将请求依次分配给每台服务器。
  • 加权轮询:根据服务器的性能设置权重,权重越高的服务器分配到的请求越多。
  • 最少连接数:将请求分配给当前连接数最少的服务器,适合长时间连接的应用。
  • 源IP哈希:根据客户端IP地址进行哈希计算,将请求始终分配给相同的服务器。

4.动静分离

动静分离技术是一种用于优化网站性能的架构策略,将动态资源和静态资源分开处理,以提高访问效率、减轻服务器负载。动态资源通常是需要服务器实时处理、生成的内容(如用户数据查询、购物车等),而静态资源是无需修改、可以直接读取的文件(如图片、CSS、JavaScript文件等)。动静分离的主要原理和实现方式如下:

  1. 静态资源的独立存储与分发
    将静态资源(如图片、CSS、JavaScript)存储在独立的服务器上,或者直接放置到内容分发网络(CDN)中,由CDN缓存和分发。这样,用户在访问静态资源时,不需要经过主服务器,从而减少主服务器的压力,提高资源的访问速度。

  2. 动态资源由主服务器处理
    动态资源通常需要服务器实时处理,比如数据库查询、用户身份验证、个性化推荐等。这些请求仍然交给主服务器,由服务器进行计算和返回。

  3. 前端通过URL路由区分动静资源
    在前端开发中,可以通过URL路径、文件后缀等方式区分静态和动态资源。例如,动态请求路径指向主服务器,而静态资源路径指向CDN或独立的静态资源服务器。

动静分离的优势:

  1. 提升性能与访问速度
    静态资源通过CDN等加速网络分发,可以减少访问延迟,提升用户的加载速度。同时,减少主服务器的负载,使其能够更快地处理动态请求。

  2. 降低服务器负载
    静态资源由独立的服务器或CDN处理,主服务器只需处理动态请求,从而减轻了主服务器的压力,提高了系统的稳定性。

  3. 降低带宽和成本
    静态资源大部分可以缓存,一旦存储在CDN等网络中,即可减少主服务器的流量需求,有效降低带宽和运营成本。

  4. 增强扩展性
    动静资源分离后,可以分别对静态和动态部分进行扩展。例如,静态资源可以单独增加CDN节点,而动态服务器可以根据负载增加服务节点,使得系统更具弹性。

5.nginx反向代理配置

客户端发送请求,如果是api则将api后面的employee/login追加在nginx.conf文件中的proxy_pass后面,形成了真正的指定的接口地址

Day01-10-开发环境搭建_后端环境搭建_前后端联调_Nginx反向代理和负载均衡配置_哔哩哔哩_bilibili


http://www.kler.cn/a/395054.html

相关文章:

  • Bluetooth Spec【0】蓝牙核心架构
  • ElasticPDF-新国产 PDF 编辑器开发框架(基于 pdf.js Web PDF批注开发,实现高亮多边形橡皮擦历史记录保存注释文字)
  • pyparsing如何实现嵌套捕获
  • MacroSan 2500_24A配置
  • Oracle 数据库函数的用法(一)
  • 固定电话采用的是模拟信号还是数字信号?如果通话两端采用不同的信号会发生什么?
  • 计算机网络——1.1计算机网络概述
  • Bugku CTF_Web——点login咋没反应
  • 技术前沿:从强化学习到Prompt Engineering,业务流程管理的创新之路
  • 第十九周:机器学习
  • 在Linux中使用Nginx和Docker进行项目部署
  • 【mysql】explain执行计划的各个参数
  • C# Winform--SerialPort串口通讯(ASCII码发送)
  • linux 能显式修改文件的最后一次访问时间和文件内容最后被修改的时间,不能显式修改文件状态最后被改变的时间,为什么
  • Leetcode 3352. Count K-Reducible Numbers Less Than N
  • vue el-upload js 上传文件只有uid
  • Linux自定义终端提示符
  • 基于Spider异步爬虫框架+JS动态参数逆向+隧道代理+自定义中间件的猎聘招聘数据爬取
  • 一文了解Android中的AudioFlinger
  • C++ 数据结构详解
  • uniapp: IOS微信小程序输入框部分被软键盘遮挡问题
  • Vue2:组件
  • 常用服务部署
  • Python学习26天
  • SpringBoot(二十三)SpringBoot集成JWT
  • Ceph 中Crush 算法的理解