简单介绍什么是Nginx

310 阅读8分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情

一、什么是Nginx

Nginx 是一款高性能http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。并且它是一款免费的、开源的cpu、内存等资源消耗非常低,运行也非常稳定的服务器。

1. Nginx的应用场景

1、http 服务器。Nginx 是一个 http 服务器,可以独立提供 http 服务。可以做 网页静态服务器静态网站服务器:你这个网站全是静态资源,html、css、js,肯定没有class文件)。

PS:我们现在写的项目大多数都是动态网站or动态站点,然而动态网站or动态站点是不能部署到Nginx上的。但它可以部署到tomcat上,用Nginx做反向代理搭集群。

2、虚拟主机可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。

3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群,可以使用 nginx 做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

2. 虚拟主机

虚拟主机,也叫“网站空间”,就是 把一台运行在互联网上的物理服务器划分成多个“虚拟”服务器。虚拟主机技术极大的促进了网络技术的应用和普及。同时虚拟主机的租用服务也成了网络时代的一种新型经济形式。

3. 域名绑定

  • 什么是域名 域名(Domain Name) ,是由一串用“点”分隔的字符组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置,地理上的域名,指代有行政自主权的一个地方区域)
    域名是一个IP地址上有“面具”域名的目的是便于记忆和沟通的一组服务器的地址(网站,电子邮件,FTP等)。域名作为力所能及难忘的互联网参与者的名称。域名按域名系统(DNS)的规则流程组成。在DNS中注册的任何名称都是域名。域名用于各种网络环境和应用程序特定的命名和寻址目的。通常,域名表示互联网协议(IP)资源,例如用于访问因特网的个人计算机,托管网站的服务器计算机,或网站本身或通过因特网传送的任何其他服务。世界上第一个注册的域名是在1985年1月注册的。  
  • 域名级别

(1)顶级域名

顶级域名又分为两类:
一是 国家顶级域名(national top-level domainnames,简称nTLDs),200多个国家都按照ISO3166国家代码分配了顶级域名,例如中国是cn,美国是us,日本是jp等;
二是 国际顶级域名(international top-level domain names,简称iTDs),例如表示工商企业的 .com .top,表示网络提供商的 .net,表示非盈利组织的 .org,表示教育的 .edu,以及没有限制的中性域名如 .xyz等。大多数域名争议都发生在com的顶级域名下,因为多数公司上网的目的都是为了赢利。但因为自2014年以来新顶级域名的发展,域名争议案件数量增长幅度越来越大。

为加强域名管理,解决域名资源的紧张,Internet协会、Internet分址机构及世界知识产权组织(WIPO)等国际组织经过广泛协商在原来三个国际通用顶级域名:(com)的基础上,新增加了7个国际通用顶级域名:firm(公司企业)、store(销售公司或企业)、Web(突出WWW活动的单位)、arts(突出文化、娱乐活动的单位)、rec (突出消遣、娱乐活动的单位)、info(提供信息服务的单位)、nom(个人),并在世界范围内选择新的注册机构来受理域名注册申请。
例如:baidu.com

(2)二级域名

二级域名是指 顶级域名之下的域名
在国际顶级域名(iTDs)下,它是指域名注册人的网上名称,例如 ibm,yahoo,microsoft等;
在国家顶级域名(nTLDs)下,它是表示注册企业类别的符号,例如 .top,com,edu,gov,net等。

中国在国际互联网络信息中心(Inter NIC) 正式注册并运行的顶级域名是CN,这也是中国的一级域名。在顶级域名之下,中国的二级域名又分为类别域名行政区域名两类。

类别域名共7个, 包括用于科研机构的ac;

  1. 用于工商金融企业的com、top;
  2. 用于教育机构的edu;
  3. 用于政府部门的 gov;
  4. 用于互联网络信息中心和运行中心的net;
  5. 用于非盈利组织的org。

行政区域名有34个,分别对应于中国各省、自治区和直辖市。
例如:map.baidu.com

(3)三级域名

三级域名用字母( A~Z,a~z,大小写等)、数字(0~9)和连接符(-)组成, 各级域名之间用实点(.)连接,三级域名的长度不能超过20个字符。如无特殊原因,建议采用申请人的英文名(或者缩写)或者汉语拼音名 (或者缩写) 作为三级域名,以保持域名的清晰性和简洁性。
例如:kaf.map.baidu.com

  • 域名与IP绑定

一个域名对应一个 ip 地址,一个 ip 地址可以被多个域名绑定。

本地测试可以修改 hosts 文件(C:\Windows\System32\drivers\etc)

image.png

可以配置域名和 ip 的映射关系,如果 hosts 文件中配置了域名和 ip 的对应关系,不需要走dns 服务器。

PS:我们可以使用域名与IP绑定来实现虚拟主机(把一台运行在互联网上的物理服务器划分成多个“虚拟”服务器)的效果。

二、Nginx反向代理与负载均衡

1. 反向代理

1. 什么是反向代理

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

首先我们先理解正向代理(代理),如下图:

image.png

举例说明:在机房里,学生的机子是上不了网的,而老师的机子是上得了网的。但此时,学生的机子要想去访问外网,该怎么办呢?此时,老师的机子可以作为一个代理服务器。只需要在学生的机子上配置代理服务器的IP地址就可以了。配好了之后,学生在浏览器里输入对应的网址其实就是把请求发给了代理服务器,然后再由代理服务器去上网。上网完之后,再通过代理服务器将请求的资源发送给学生的机子,这样就能够实现局域网链接互联网的请求了。(又如:路由器、翻墙软件...)

正向代理是针对你的客户端,而反向代理是针对服务器的,如下图

image.png

举例说明:现有一请求想去访问tomcat网站(比如说:我想通过网络访问我部署在Linux上的tomcat的网站)。可以采取直接访问,但直接访问会有以下两个问题:

① 如果访问量较大,且此时就一台tomcat的话,会导致并发量太低了(所以我们希望tomcat集群。即部署多个tomcat服务器)。而设置了tomcat集群就会导致一个问题,该请求是请求哪个tomcat的呢。此时就需要一个代理服务器。所有请求都需要通过代理服务器,然后再由代理服务器帮我分发这些请求到某个tomcat上。

② 如果通过互联网直接访问服务器的资源的话有可能造成安全问题。而此时如果用上了反向代理服务器的话,我就可以将我所有的资源请求都打到反向代理服务器上。然后我可以在反向代理服务器与服务器之间加上一个防火墙 or 直接将该服务器做成一个内网 or 局域网。使其与外网隔绝。使得该服务器更加的安全一点点。

image.png

所以反向代理,代理的是服务端

2. 负载均衡

1. 什么是负载均衡

负载均衡 建立在现有网络结构之上,它 提供了一种廉价、有效、透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

负载均衡,英文名称为Load Balance,其意思就是 分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

PS:简的来讲就是:集群的服务器的带宽、吞吐量、处理能力等性能均一致。