初学Nginx要掌握哪些概念?

news2024/11/28 14:13:39

文章目录

    • 为什么要使用Nginx?
    • 什么是Nginx?
    • Nginx的作用?
      • 反向代理
      • 负载均衡
      • 动静分离

为什么要使用Nginx?

小公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户。

但是慢慢的,使用平台的用户越来越多了,并发量慢慢增大了,这时候一台服务器满足不了我们的需求了。

于是我们横向扩展,又增加了服务器。这个时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和处理请求。

什么是Nginx?

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

其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。

Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7 * 24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。

Nginx代码完全用C语言从头写成。官方数据测试表明能够支持高达 50,000 个并发连接数的响应。

Nginx的作用?

反向代理

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

反向代理是为服务端服务的,反向代理可以帮助服务器接收来自客户端的请求,帮助服务器做请求转发,负载均衡等。

反向代理对服务端是透明的,对我们是非透明的,即我们并不知道自己访问的是代理服务器,而服务器知道反向代理在为他服务。

正向代理与反向代理的区别?

代理对象

正向代理,代理客户端,服务端不知道实际发起请求的客户端

反向代理,代理服务端,客户端不知道实际提供服务的服务端

架构位置

正向代理,架设在客户机和目标主机之间

反向代理,架设在服务器端

用途不同

正向代理其实是客户端的代理,帮助客户端访问其无法访问的服务器资源。

反向代理则是服务器的代理,帮助服务器做负载均衡,安全防护等。

负载均衡

负载均衡(Load Balance),意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。

Nginx负载均衡算法

1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果超过了最大失败次数后(max_fails,默认1),在失效时间内(fail_timeout,默认10秒),该节点失效权重变为0,超过失效时间后,则恢复正常,或者全部节点都为down后, 那么将所有节点都恢复为有效继续探测,一般来说rr可以根据权重来进行均匀分配。

2、加权轮训
weight的值越大分配到的权限概率越高,主要用于后端每台服务器性能不均匀情况,或者仅仅为在主从情况下设置不同的权重值,达到合理利用主机资源

3、least_conn最少连接
优先将客 户端请求调度到当前连接最少的服务器。

4、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器, 可以解决session(会话状态)的问题,但是ip_hash会造成负载不均,有的服务请求接受多,有的服务请求接受少,所以不建议采用ip_hash模式

补充:session的概念

session共享问题可用后端服务的session共享代替nginx的ip_hash。ip_hash无法作用于四层反向代理,配置需要将其他模式删除例如weight删掉然后直接在加上

注释:

Session又称为会话状态,是Web系统中最常用的状态,用于维护和当前浏览器实例相关的一些信息。我们控制用户去权限中经常用到Session来存储用户状态

session其实分为客户端Session和服务器端Session。

当用户首次与Web服务器建立连接的时候,服务器会给用户分发一个 SessionID作为标识。SessionID是一个由24个字符组成的随机字符串。用户每次提交页面,浏览器都会把这个SessionID包含在 HTTP头中提交给Web服务器,这样Web服务器就能区分当前请求页面的是哪一个客户端。这个SessionID就是保存在客户端的,属于客户端Session。

其实客户端Session默认是以cookie的形式来存储的,所以当用户禁用了cookie的话,服务器端就得不到SessionID。这时我们可以使用url的方式来存储客户端Session。也就是将SessionID直接写在了url中,当然这种方法不常用。

Session共享:指在一个浏览器对应多个Web服务时,服务端的Session数据需要共享。例如单点登录、Web服务器集群等场景都需要用到、多子服务。

5、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

6、url_hash(第三方)
和ip hash算法类似,是对每个请求按url的hash结果分配,使每个URL定向到同一个后端服务器, 但是也会造成分配不均的问题, 这种模式后端服务器为缓存时比较好。

动静分离

将动态请求与静态请求分离开,动态请求经过nginx访问tomcat服务器,nginx可以直接做静态请求服务器,静态请求直接由nginx处理,动态请求由tomcat处理。

实现方式

  • 将静态资源独立成单独域名,放在独立的服务器上,如七牛云;

  • 动静资源混合发布,通过nginx服务器指定静态资源后缀名,实现不同请求的转发。

at处理。

实现方式

  • 将静态资源独立成单独域名,放在独立的服务器上,如七牛云;

  • 动静资源混合发布,通过nginx服务器指定静态资源后缀名,实现不同请求的转发。

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

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

相关文章

iNotes(WebMail)中的附件显示

大家好,才是真的好。 1995年Domino R4/4.5中加入了HTTP功能,从此便支持从用户从Web浏览器上查看邮件.一开始称之为Domino Web Access,后来更名为IBM Lotus iNotes,简称iNotes, 对于不熟悉Notes/Domino的人来说&#…

达梦数据库dblink测试(DM-ORACLE19c及DM8-DM8)

目录 DM与DM创建DBLINK. 3 一、配置203服务器... 3 1、主服务器203开启mal服务... 3 2、主服务器203配置dmmal.ini文件... 3 3、重启203数据库... 4 二、配置200服务器... 4 三、创建dblink. 4 DM与Oracle数据库创建dblink. 5 一、DM服务器:... 6 1、初始…

祝愿莘莘学子高考顺利!Good luck on your Gaokao!

《登科后》 唐孟郊 昔日龌龊不足夸,今朝放荡思无涯。 春风得意马蹄疾,一日看尽长安花。 Gone are all my past woes! What more have I to say? My body and my mind enjoy their fill today. Successful, faster runs my horse in vernal breeze;…

ArrayList 的底层原理和源码分析

tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。 推荐:体系化学习Java(Java面试专题) 文章目录 一、简介二、…

Cookie Session

第一章 会话技术 1.1 什么是会话 web会话可简单理解为:用户开一个浏览器,访问某一个web网站,在这个网站点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 它是指浏览器和服…

URL到页面: 探索网页加载的神秘过程

当我们从浏览器的地址栏输入 URL, 按下回车, 再到最后出现需要的网页界面, 这中间究竟发生了什么, 接下来就一步步进行解析. 主要是如下过程: 输入网址DNS 解析客户端发送 HTPP 请求建立 TCP 连接服务器处理请求, 计算响应, 返回响应浏览器渲染页面关闭连接 本篇中只是概述整…

AUTOSAR-OS的调度机制-调度表(没理解透,继续更新)

什么是调度表: 1. 调度表由一系列按时间先后顺序排序的终结点组成,其中每个终结点都有自己的任务,有的终结点可能是激活一系列的任务,有的是设置一系列的事件,还有的可能是既激活一系列的任务又设置一系列的事件。 调…

数据结构之庖丁解牛八大排序算法,附动图说明过程(上)

目录 一、排序的概念以及应用 二、常见排序算法的实现 1.插入排序 1.1直接插入排序 b.实现直接插入排序 1.2希尔排序(缩小增量排序) 2.选择排序 2.1直接选择排序 2.2堆排序 3.交换排序 3.1冒泡排序 一、排序的概念以及应用 1.排序的概念 所谓排序&#x…

Mysql数据库--修改root密码的几种方法(忘记密码知道密码)

Mysql数据库--修改root密码的几种方法(忘记密码&知道密码) 🔻一、知道密码情况--修改root密码⛳ 1.1 方式1:alter 命令修改⛳ 1.2 方式2:set password命令修改 🔻二、忘记密码情况-修改root密码⛳ 2.1 …

华为OD机试真题 Java 实现【找车位】【2023 B卷 100分】,附详细解题思路

一、题目描述 停车场有一横排车位,0代表没有停车,1代表有车。至少停了一辆车在车位上,也至少有一个空位没有停车。 为了防剐蹭,需为停车人找到一个车位,使得距停车人的车最近的车辆的距离是最大的,返回此…

打造高质量视频,创造视觉奇观!Camtasia 2023为你升级!

嘿,伙计! 在这个全新版本中,我们迎来了焕然一新的动画控制和更简化的特效制作流程,让创作变得更高效。 不仅如此,全新的背景去除和动画光标功能也让视频拥有全新的视觉体验。让我们先谈谈光标,这个细节或…

计算机视觉:风格迁移

风格迁移 本节将介绍如何使用卷积神经网络,自动将一个图像中的风格应用在另一图像之上,即风格迁移(style transfer) (Gatys et al., 2016)。 这里我们需要两张输入图像:一张是内容图像,另一张是风格图像。…

Mac使用DBeaver连接达梦数据库

Mac使用DBeaver连接达梦数据库 下载达梦驱动包 达梦数据库 在下载页面随便选择一个系统并下载下来。 下载下来的是zip的压缩包解压出来就是一个ISO文件,然后我们打开ISO文件进入目录:/dameng/source/drivers/jdbc 进入目录后找到这几个驱动包&#x…

Vue 2和Vue 3路由Router创建的区别简记(在main.js文件中引入的区别和router的js文件中创建语法的区别)

Vue 2和Vue 3路由Router创建的区别即Router3.0和Router4.0的创建区别简记 1、版本的搭配: Vue 2到Vue 3的改版升级,同样的带来Vue Router的升级。创建Vue项目之后,我们可以在package.json文件中看到,Vue 2创建的项目往往是与Vue…

C++ | 拷贝文件

C拷贝文件 文章目录 C拷贝文件ANSI-C-WAYPOSIX-WAY (K&R use this in "The C programming language", more low-level)KISS-C-Streambuffer-WAYCOPY-ALGORITHM-C-WAYOWN-BUFFER-C-WAYLINUX-WAY理智的方式C 17Reference欢迎关注公众号【三戒纪元】 列举了几种拷贝…

nestjs超详细从零到零点五详细入门项目搭建过程

nestjs超详细从零到零点五详细入门项目搭建过程 项目完整地址github,修复了一些swagger文档接口,传参显示问题 从零到有搭建一个完整的后台管理系统项目 涉及到的知识 controller控制器provider提供者module模块middleware中间件filter过滤器pipe管道…

简明Python教程

前言:学习《简明 Python 教程》Swaroop, C. H. 著 沈洁元 译 www.byteofpython.info 摘录,方便以后使用查阅。 基础概念 常量 Python中有4种类型的数——整数、长整数、浮点数和复数。 2是一个整数的例子。长整数不过是大一些的整数。3.23和52.3E-4是…

高标准农田信息化管理平台概要设计

1、综合信息一张图系统 通过一张图的形式,可视化直观展示地区土地分布、耕地质量、高标准农田建设情况、灌溉情况、设备分布情况及环境监测数据。农业管理者可在一张图上查看农田相关信息,及时了解农田情况,为农田管理者的精准管理和科学决策…

Axure教程—拖拽获取(中继器+动态面板 )

本文将教大家如何用AXURE中的中继器和动态面板制作拖拽获取效果 一、效果介绍 如图: 预览地址:https://68e5b3.axshare.com 下载地址:https://download.csdn.net/download/weixin_43516258/87874085?spm1001.2014.3001.5503 二、功能介绍 …

OpenMMLab-AI实战营第二期——2-2.基于RTMPose的耳朵穴位关键点检测(Colab+MMPose)

文章目录 1. Colab和Google云端硬盘1.1 建立项目文件和jupyter文件1.2 Colab运行时选择1.3 关联Colab中的文件和Google云端硬盘的文件 2. Colab和MMPose2.1 环境配置2.2 配置文件修改 3. Colab相关知识 视频链接:B站-RTMPose关键点检测-安装MMDetection和MMPose 1.…