广告
返回顶部
首页 > 资讯 > 服务器 >Nginx简介
  • 359
分享到

Nginx简介

nginx服务器运维Poweredby金山文档 2023-10-11 11:10:32 359人浏览 薄情痞子
摘要

一、什么是Nginx? Nginx是一个高性能的Http和反向代理WEB服务器,同时也提供IMAP/POP3/SMTP服务。Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3/SMTP)代理服务器。Ngin

一、什么是Nginx?

Nginx是一个高性能的Http和反向代理WEB服务器,同时也提供IMAP/POP3/SMTP服务。Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3/SMTP)代理服务器。Nginx的特点是:占有内存少,并发能力强。

Nginx专门为性能优化开发,性能是最重要的考量,非常注重效率,事实上Nginx的并发能力在同类型的网页服务器种表现较好,能够支持高达50000个并发连接响应数。

二、Nginx相关概念

① 代理(正向代理、反向代理)

Ⅰ、正向代理

概念:正向代理,意思是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。

客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问,这个过程就是正向代理。

Ⅱ、反向代理

概念:反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。

反向代理,其实对于客户端来说,对代理是无感知的,因为客户端不需要任何配置就可以访问。

过程:反向代理时,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,将数据返回给客户端,此时反向代理服务器和目标服务器在外界看来就是一个服务器,暴露的是代理服务器,隐藏了真实服务器的IP地址。

端口号为5173的反向代理服务器根据客户端的请求,将请求转发到目标服务器的Tomcat中,但是在这个过程中,客户端直接访问的是端口号为5173的反向代理服务器,而不是Tomcat服务器,所以对外暴露的是反向代理服务器,而真正的内部服务器是端口号为8080的Tomcat。从客户端来看,客户端并不知道有反向代理服务器的存在,所以在外部看来,反向代理服务器5173和Tomcat服务器8080好像是一个服务器,也就是对外就是一个服务器。

负载均衡

概念:负载均衡其意思就是分摊到多个操作单元上进行执行,从而共同完成工作任务。

客户端发送请求到服务器,服务器处理请求,与数据库交互,服务区处理完成后,将结果响应给客户端。

这是一个请求的正常流程,但是当今信息量不断增加,如果还是依靠于这种架构模式,就会产生很多问题,那么该如何解决?

我们首先想到的是提高服务器、数据库的配置,但是硬件提升也不是无限度的,所以我们可能需要另辟蹊径来解决。既然单个服务器解决不了,那么我们就增加服务器的数量,然后将各个不同的请求分发到各个服务器上,减少一个服务器的请求数,将负载(请求)分发到不同服务器上,也就是我们所说的负载均衡。

客户端发送N条请求,上面我们了解到Nginx可以做反向代理,所以在这里,用户请求可以通过反向代理服务器,将N条请求平均分发到不同的服务器,不同端口号的服务器会得到反向代理服务器分发到不同请求信息进行处理。(当然,不同服务器处理的请求数量需要根据实际情况来定,均分处理请求是理想情况)

负载均衡的分配策略

Ⅰ、轮询策略(负载均衡默认的分配策略)

将用户的请求轮流分配给服务器,就像是挨个数数,轮流分配。如果后端有服务器宕机了,就会自动剔除。

upstream myserver {    server 192.168.220.120:8080;    server 192.168.220.120:8081;}
Ⅱ、weight策略(权重策略)

简而言之,就是当weight(权重)越高时,被分配的用户请求就会越多。

upstream myserver {    server 192.168.220.120:8080 weight=1;    server 192.168.220.120:8081 weight=5;}
Ⅲ、ip_hash策略

每个请求访问会根据ip地址的hash结果进行分配,这样每个用户就会固定访问一个后端服务器,也就是只要用户的ip地址不发生改变,那会对应后续访问的后端服务器就不会发生变化,可以解决session的问题。

upstream myserver {    ip_hash;    server 192.168.220.120:8080;    server 192.168.220.120:8081;}
Ⅳ、fair策略(第三方)

按后端服务器的响应时间来分配,响应时间短的优先分配。比如,当客户端发出请求后,Nginx负载均衡,转发请求到后端服务器中,后端服务器后很多(比如:A服务器、B服务器……等等),其中如果B服务器响应速度最快,也就是响应时间最短,那么就会将请求转发给B服务器。

upstream myserver {    server 192.168.220.120:8080;    server 192.168.220.120:8081;    fair;}

③ 动静分离

概念:动静分离是指在web服务器架构中,将静态页面与动态页面或者静态内容接口和动态内容接口分开不同系统访问的架构设计方法,进而提升整个服务访问性能和可维护性。

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

最初,我们在项目加载时,会将动态、静态资源全部加载到Tomcat服务器中(这里用Tomcat举例),这无疑会增加Tomcat服务器的运行压力。

所以,我们想出来一种方式,来减小服务器的压力,也就是动静分离。

此时,我们会将动态资源放入到Tomcat服务器中,将静态资源放到静态资源服务器中,如果客户端请求动态或静态资源,那么反向代理服务器就会向Tomcat服务器或者静态资源服务器中分别分发请求,同时也减轻了服务器的压力。我们可以看到,动静分离是将动态请求与静态请求分开,不能简单的理解为只是将动态页面和静态页面分离开。

实现动静分离的两种方式

① 把静态文件独立成单独的域名,放在独立的服务器上。(目前主流)
② 把静态文件和动态文件混合放在一起,通过Nginx来去分开。

高可用

通过上面相关概念的分析,我们可以看到Nginx服务器有很多好处(我们这里用Tomcat举例),Tomcat如果宕机后,Nginx会做出相应的反应,但是如果Nginx宕机了,此时用户发送请求,是无法收到响应的,我们这时该怎么办?

我们此时就需要配置成一个高可用的效果,那么什么是高可用?也就是如果Nginx宕机后,用户的请求不会受到影响,仍然可以正常使用,这就是高可用。高可用的效果是怎样的呢?

我们此时会有一台Nginx的主服务器,和一台Nginx的备份务器,一般情况下,当主服务器正常运行时,用户请求会经过主服务器分发请求到各个服务器上。但是当主服务器宕机后,这时就会自动切换到备份服务器,通过备份服务器来完成用户的请求,此时,备份服务器作为主服务器来完成用户请求,这就是高可用的一个效果。我们实现这个过程,需要用到一个软件,叫做keepalived,它会通过脚本来进行检测Nginx服务器是否还存活,如果宕机了,就会自动切换到备份服务器。但是,我们可以看到一个问题,不同的Nginx服务器的ip是不同的,所以我们此时需要对外提供虚拟ip,将虚拟ip绑定到两台Nginx服务器上,keepalived在这个过程中起到一个路由的作用。也就是说,keepalived在这个过程中会检测是否存活,如果主服务器宕机后,keepalived会将虚拟ip绑定到备份服务器中,所以,总的来说,作为用户,都是通过这个虚拟ip来进行的访问。(主服务器以及备份服务器都需要keepalived)

来源地址:https://blog.csdn.net/weixin_52772307/article/details/128576305

--结束END--

本文标题: Nginx简介

本文链接: https://www.lsjlt.com/news/428328.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Nginx简介
    一、什么是Nginx Nginx是一个高性能的HTTP和反向代理Web服务器,同时也提供IMAP/POP3/SMTP服务。Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3/SMTP)代理服务器。Nginx...
    99+
    2023-10-11
    nginx 服务器 运维 Powered by 金山文档
  • Nginx之负载均衡upstream模块简介和使用
    一、upstream模块简介 Nginx的负载均衡功能依赖于ngx_http_upsteam_module模块,所支持的代理方式包括proxy_pass, fastcgi_pass, uwsgi_pa...
    99+
    2023-09-07
    android 前端 后端
  • MongoDB(一):NoSQL简介、MongoDB简介
    1. NoSQL简介 1.1 什么是NoSQL NoSQL(NoSQL= Not Only SQL),意即“不仅仅是SQL",是一项全新的数据库理念,泛指非关系型的数据库。 1.2 为什么需要NoSQL 随着互联网web2.0网站的兴起,非...
    99+
    2019-07-31
    MongoDB(一):NoSQL简介 MongoDB简介
  • Nginx+PHP配置相关进程的简要介绍有哪些
    这篇文章给大家介绍Nginx+PHP配置相关进程的简要介绍有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Nginx+PHP配置有很多的技术应用技巧,网管员在学习的时候都需要注意相...
    99+
    2022-10-19
  • Nginx负载均衡之upstream模块简介与使用详解
    目录一、upstream模块简介二、负载均衡算法简介1、轮询2、权重轮询3、IP哈希4、最小连接数5、最短响应时间6、url_hash算法三、配置示例四、负载均衡效果展示1、部署2个...
    99+
    2022-11-13
  • Python~~简介介绍
    Python (英国发音:/paθn/ 美国发音:/paθɑn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于...
    99+
    2022-10-18
  • nginx介绍及配置
    Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx的特点是占用内存少,并发能力...
    99+
    2023-09-09
    nginx
  • IPv6简介
    IPv6仅仅只是“长”吗?IPv6的地址长什么样?平时我们是怎么使用IPv6的呢?编写网络程序的时候要怎么处理IPv6?且待本篇一一道来。 为什么需要IPv6 全球的IP地址由一个名字叫IANA(Internet Assigned Num...
    99+
    2023-01-31
    简介
  • python简介
    Python是一种开源的面向对象编程语言随着人工智能与大数据分析的火热,python也随之火热起来Python应用广泛,特别适用以下几个方面1.系统编程:提供API(Application Programming Interface,应用程...
    99+
    2023-01-30
    简介 python
  • DevOps简介
    DevOps 是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。     DevOps的概念 DevOps一词的来自于Development和Ope...
    99+
    2023-01-30
    简介 DevOps
  • Python 简介
    Python介绍与特点(自学python知识整理) Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计: Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于P...
    99+
    2023-01-31
    简介 Python
  • OpenCV简介
    OpenCV简介 OpenCV(开源计算机视觉库:http://opencv.org)是一个开源库,包含数百种计算机视觉算法。OpenCV 具有模块化结构,主要包括下列模块: 核心功能(core) - 定义基本数据结构的紧凑模块,包括密集多...
    99+
    2023-08-30
    opencv 人工智能 计算机视觉
  • Ajax简介
    一、Ajax简介 Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指⼀种创建交互式⽹⻚应⽤的⽹⻚开发技术。 Ajax 是⼀种⽤于创建快速动态⽹⻚的技术。 Aja...
    99+
    2023-09-02
    ajax javascript 服务器
  • argparse简介
    一、argparse简介 argparse 模块是 Python 内置的用于命令项选项与参数解析的模块,argparse 模块可以让人轻松编写用户友好的命令行接口,能够帮助程序员为模型定义参数。 ar...
    99+
    2023-09-01
    python
  • Elasticsearch简介
      疫情已经持续了好几个月了,作为程序员滴我们也帮不上什么忙,只有老老实实呆在家里或者出门一定戴口罩准守一些规则,不给国家添乱。不过最近疫情开始有所扭转,但是还是对国家经济,对企业业务造成了很大的影响,我也被停止了实习。接下来,可...
    99+
    2014-08-14
    Elasticsearch简介
  • Zookeeper简介
    1.1 什么是zookeeper Zookeeper是一个分布式的、开源的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Apache Hadoop的一个子项目,主要是用来解决分布式应用中经常遇到的一些数据...
    99+
    2017-07-20
    Zookeeper简介
  • Redis 简介
    Redis 特性     1.速度快       官方给出的数字是读写性能可以达到10万/秒,当然这也取决于机器的性能。大致归纳速度快的四点原因如下:             # Redis 的所有数据都是放在内存中的,这也是最主...
    99+
    2021-08-02
    Redis 简介
  • Cassandra 简介
    Cassandra是云原生和微服务化场景中最好的NoSQL数据库。我信了~  1. Cassandra是什么 高可用性和可扩展的分布式数据库 Apache Cassandra™是一个开源分布式数据,可提供当今最苛刻的应用程序所需...
    99+
    2015-01-20
    Cassandra 简介
  • kettle 简介
    描述 Kettle是一款开源的 ETL 工具,采用 JAVA 语言编写。 特性 高效稳定,支持多种类型的数据格式,如:MySQL,Oracle,PostGreSQL,CSV 等。 可视化设计。 概念 Transformation(转换):数...
    99+
    2015-03-30
    kettle 简介
  • Redis简介
    Redis官方网网站是:http://www.redis.io/ 。 Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序。 Redis有三个主要特点,使它优越于...
    99+
    2022-06-04
    简介 Redis
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作