💖你还敢和我说不会Nginx?💖

举报
XiaoLin_Java 发表于 2022/02/22 15:19:21 2022/02/22
【摘要】 一、Nginx简介 1.1、Nginx概述   Nginx(“engine x”)一个具有高性能的HTTP和反向代理的WEB服务器,同时也是一个POP3/SMTP/IMAP代理服务器,是由伊戈尔·赛索耶夫(俄罗斯人)使用C语言编写的,Nginx的第一个版本是2004年10月4号发布的0.1.0版本。另外值得一提的是伊戈尔·赛索耶夫将Nginx的源码进行了开源,这也为Nginx的发展提供了良...

一、Nginx简介

1.1、Nginx概述

   Nginx(“engine x”)一个具有高性能的HTTP和反向代理的WEB服务器,同时也是一个POP3/SMTP/IMAP代理服务器,是由伊戈尔·赛索耶夫(俄罗斯人)使用C语言编写的,Nginx的第一个版本是2004年10月4号发布的0.1.0版本。另外值得一提的是伊戈尔·赛索耶夫将Nginx的源码进行了开源,这也为Nginx的发展提供了良好的保障。

image-20210613202632701

1.2、名词解释

1.2.1、WEB服务器

    WEB服务器也叫网页服务器,英文名叫Web Server,主要功能是为用户提供网上信息浏览服务。

1.2.2、HTTP

   HTTP是超文本传输协议的缩写,是用于从WEB服务器传输超文本到本地浏览器的传输协议,也是互联网上应用最为广泛的一种网络协议。HTTP是一个客户端和服务器端请求和应答的标准,客户端是终端用户,服务端是网站,通过使用Web浏览器、网络爬虫或者其他工具,客户端发起一个到服务器上指定端口的HTTP请求。

1.2.3、 POP3/SMTP/IMAP

POP3(Post Offic Protocol 3):邮局协议的第三个版本。

SMTP(Simple Mail Transfer Protocol):简单邮件传输协议。

IMAP(Internet Mail Access Protocol):交互式邮件存取协议。

1.3、Nginx的作用

    Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、php等。但是不支持 java。Java 程序只能通过与 tomcat 配合完成。Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。

    Nginx 不仅可以实现动静分离、做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。

1.3.1、正向代理

    如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

1.3.2、反向代理

    反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。

    比如用户要访问www.linstudy.cn,但是www.linstudy.cn悄悄地把这个请求交给后台N台服务器中的其中一台来做,这种方式就是反向代理了。

反向代理

1.3.3、负载均衡

    客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,再将结果返回给客户端。

    我们首先想到的可能是升级服务器的配置,比如提高 CPU 执行频率,加大内存等提高机器的物理性能来解决此问题,但是我们知道摩尔定律的日益失效,硬件的性能提升已经不能满足日益提升的需求了。最明显的一个例子,天猫双十一当天,某个热销商品的瞬时访问量是极其庞大的,那么类似上面的系统架构,将机器都增加到现有的顶级物理配置,都是不能够满足需求的。那么怎么办呢?

    上面的分析我们去掉了增加服务器物理配置来解决问题的办法,也就是说纵向解决问题的办法行不通了,那么横向增加服务器的数量呢?这时候集群的概念产生了,单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们
所说的负载均衡。

    使用负载均衡大致有以下几种方式:

  1. 使用硬件负载均衡策略,如使用F5,Array等负载均衡器。
  2. 使用软件进行负载均衡。
  3. 如使用阿里云服务器均衡SLB。
  4. 使用Nginx+Keepalived。
  5. 其他软件负载均衡如LVS(Linux Virtual Server),haproxy等技术。

负载均衡

1.3.4、动静分离

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

image

1.4、常用的服务器对比

   Netcraft公司于1994年底在英国成立,多年来一直致力于互联网市场以及在线安全方面的咨询服务,其中在国际上最具影响力的当属其针对网站服务器、SSL市场所做的客观严谨的分析研究,公司官网每月公布的调研数据(Web Server Survey)已成为当今人们了解全球网站数量以及服务器市场分额情况的主要参考依据,时常被诸如华尔街杂志,英国BBC,Slashdot等媒体报道或引用。

   我们先来看一组数据,我们先打开Nginx的官方网站,找到Netcraft公司公布的数据,对当前主流服务器产品进行介绍。

image-20210613124323988

   上面这张图展示了2019年全球主流Web服务器的市场情况,其中有Apache、Microsoft-IIS、google Servers、Nginx、Tomcat等,我们把几种常见的服务器来给大家简单介绍下。

1.4.1、IIS

   全称(Internet Information Services)即互联网信息服务,是由微软公司提供的基于windows系统的互联网基本服务。windows作为服务器在稳定性与其他一些性能上都不如类UNIX操作系统,因此在需要高性能Web服务器的场合下,IIS可能就会被"冷落"。

1.4.2、Tomcat

   Tomcat是一个运行Servlet和JSP的Web应用软件,Tomcat技术先进、性能稳定而且开放源代码,因此深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。但是Tomcat天生是一个重量级的Web服务器,对静态文件和高并发的处理比较弱。

1.4.3、Apache

   Apache的发展时期很长,同时也有过一段辉煌的业绩。从上图可以看出大概在2014年以前都是市场份额第一的服务器。Apache有很多优点,如稳定、开源、跨平台等。但是它出现的时间太久了,在它兴起的年代,互联网的产业规模远远不如今天,所以它被设计成一个重量级的、不支持高并发的Web服务器。在Apache服务器上,如果有数以万计的并发HTTP请求同时访问,就会导致服务器上消耗大量能存,操作系统内核对成百上千的Apache进程做进程间切换也会消耗大量的CUP资源,并导致HTTP请求的平均响应速度降低,这些都决定了Apache不可能成为高性能的Web服务器,这也促使了Lighttpd和Nginx的出现。

1.4.4、Lighttpd

   Lighttpd是德国的一个开源的Web服务器软件,它和Nginx一样,都是轻量级、高性能的Web服务器,欧美的业界开发者比较钟爱Lighttpd,而国内的公司更多的青睐Nginx,同时网上Nginx的资源要更丰富些。

1.5、Nginx的优点

1.5.1、速度更快、并发更高

   单次请求或者高并发请求的环境下,Nginx都会比其他Web服务器响应的速度更快。一方面在正常情况下,单次请求会得到更快的响应,另一方面,在高峰期(如有数以万计的并发请求),Nginx比其他Web服务器更快的响应请求。Nginx之所以有这么高的并发处理能力和这么好的性能原因在于Nginx采用了多进程和I/O多路复用(epoll)的底层实现。

1.5.2、配置简单,扩展性强

   Nginx的设计极具扩展性,它本身就是由很多模块组成,这些模块的使用可以通过配置文件的配置来添加。这些模块有官方提供的也有第三方提供的模块,如果需要完全可以开发服务自己业务特性的定制模块。

1.5.3、高可靠性

   Nginx采用的是多进程模式运行,其中有一个master主进程和N多个worker进程,worker进程的数量我们可以手动设置,每个worker进程之间都是相互独立提供服务,并且master主进程可以在某一个worker进程出错时,快速去"拉起"新的worker进程提供服务。

1.5.4、热部署

   现在互联网项目都要求以7*24小时进行服务的提供,针对于这一要求,Nginx也提供了热部署功能,即可以在Nginx不停止的情况下,对Nginx进行文件升级、更新配置和更换日志文件等功能。

1.5.5、成本低、BSD许可证

   BSD是一个开源的许可证,世界上的开源许可证有很多,现在比较流行的有六种分别是GPL、BSD、MIT、Mozilla、Apache、LGPL。

image-20210613125604819

1.6、Nginx的功能特性及常用功能

   Nginx提供的基本功能服务从大体上归纳为基本HTTP服务、高级HTTP服务和邮件服务等三大类。

1.6.1、基本HTTP服务

   Nginx可以提供基本HTTP服务,可以作为HTTP代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持SSL等。他包含有以下几种服务:

  • 处理静态文件、处理索引文件以及支持自动索引。
  • 提供反向代理服务器,并可以使用缓存加上反向代理,同时完成负载
    均衡和容错。
  • 提供对FastCGI、memcached等服务的缓存机制,,同时完成负载均
    衡和容错。
  • 使用Nginx的模块化特性提供过滤器功能。Nginx基本过滤器包括gzip压缩、ranges支持、chunked响应、XSLT、SSI以及图像缩放
    等。其中针对包含多个SSI的页面,经由FastCGI或反向代理,SSI过滤器可以并行处理。
  • 支持HTTP下的安全套接层安全协议SSL。
  • 支持基于加权和依赖的优先权的HTTP/2。

1.6.2、高级HTTP服务

  • 支持基于名字和IP的虚拟主机设置。
  • 支持HTTP/1.0中的KEEP-Alive模式和管线(PipeLined)模型连接。
  • 自定义访问日志格式、带缓存的日志写操作以及快速日志轮转。
  • 提供3xx~5xx错误代码重定向功能。
  • 支持重写(Rewrite)模块扩展。
  • 支持重新加载配置以及在线升级时无需中断正在处理的请求。
  • 支持网络监控。
  • 支持FLV和MP4流媒体传输。

1.6.3、邮件服务

   Nginx提供邮件代理服务也是其基本开发需求之一,主要包含以下特性:

  • 支持IMPA/POP3代理服务功能。
  • 支持内部SMTP代理服务功能。

二、Nginx的安装

2.1、安装

解压下载的tar.gz包

# 可以加上 -C /usr/local 参数指定解压的位置
tar -zxvf ginx-1.6.2.tar.gz 

下载所需的依赖库文件

yum install pcre -y
yum install pcre-devel -y
yum install zlib -y
yum install zlib-devel -y

进行configure配置,查看是否报错

# 在根目录进行
./configure

编译安装

make && make install

访问

    我们可以通过服务器的ip+端口(默认80)去访问Nginx。

image-20210524185610463

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200