一文弄懂Nginx

一、Nginx的产生

Nginx同Apache一样都是一种WEB服务器。以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过HTTP协议提供各种网络服务。然而,这些服务器在设计之初受到当时环境的局限,例如当时的用户规模,网络带宽,产品特点等局限并且各自的定位和发展都不尽相同。这也使得各个WEB服务器有着各自鲜明的特点。
Apache的发展时期很长,而且是毫无争议的世界第一大服务器。它有着很多优点:稳定、开源、跨平台等等。由于它兴起的年代比较久远,互联网产业远远比不上现在,所以它被设计之初是一个重量级、不支持高并发的服务器。显然在互联网产业如此发达的今天,Apache已然不能完全满足时代的需求,于是轻量级、支持高并发的服务器——Nginx诞生了。

二、概述:

Nginx(engine x) 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务。Nginx 是由伊尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。中国大陆使用 nginx 网站企业有:百度、京东、新浪、网易、腾讯、淘宝等。

三、Nginx的主要功能

1、HTTP 服务器

Nginx 可以作为一个 HTTP 服务器,可以将服务器上的静态文件(如HTML、图片)通过 HTTP 协议展现给客户端。

2、反向代理:

客户端本来可以直接通过 HTTP 协议访问某网站应用服务器,运维人员在中间加上一个 Nginx,客户端请求 Nginx,Nginx 请求应用服务器,然后将结果返回给客户端,此时 Nginx 就是反向代理服务器。负载均衡、虚拟主机等,都是基于反向代理实现。

说到代理,首先我们要明确一个概念,所谓代理就是一个代表、一个渠道,此时就设计到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问目标角色完成一些任务的过程称为代理操作过程;如同生活中的专卖店和客人的关系,客人到华为专卖店买了一个手机,这个专卖店就是代理,被代理角色就是华为厂家,目标角色就是用户。

<1>正向代理

正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。正向代理最大的特点是客户端非常明确要访问的服务器地址,服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;在正向代理中,正向代理服务器和客户端同属于一个LAN(图中方框内),隐藏了客户端信息。

在这里插入图片描述

我们可以通过在客户端设置代理,如下图:

在这里插入图片描述

总结来说:正向代理,“它代理的是客户端”,是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

正向代理的用途:
<1>可以做缓存,加速访问资源。
<2>对客户端访问授权,上网进行认证。
<3>代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息。

<2>反向代理

明白了什么是正向代理,我们继续看关于反向代理的处理方式,如国内知名的购物网站——某宝,每天同时连接到网站的访问人数已经爆表,单个服务器远远不能满足人民日益增长的购买欲望了,此时就出现了一个大家耳熟能详的名词:分布式部署[也就是通过部署多台服务器来解决访问人数限制的问题]。
某宝网站中大部分功能也是直接使用Nginx进行反向代理实现的,并且通过封装Nginx和其他的组件之后起了个高大上的名字:Tengine。各位有兴趣的话可以自行访问Tengine的官网查看具体的信息。 那么反向代理具体是通过什么样的方式实现的分布式的集群操作呢,我们先看一个示意图(我把服务器和反向代理框在一块,同属于一个环境):在反向代理中,Nginx代理服务器和服务器同属于一个LAN(图中方框内),隐藏了服务端信息。
在这里插入图片描述

通过上述的图解大家就可以看清楚了,多个客户端给服务器发送的请求,Nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。
此时请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,Nginx扮演的就是一个反向代理角色。客户端是无法感知代理的存在的,不同于正向代理,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。
反向代理,的’反’字体现在"它代理的是服务端",与正向代理服务器正好相反,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。

反向代理的作用:
(1)保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网
(2)负载均衡,通过反向代理服务器来优化网站的负载

<3>真实环境

通常情况下,我们在实际项目操作时,正向代理和反向代理很有可能会存在在一个应用场景中,正向代理客户端的请求去访问目标服务器,目标服务器是一个反向单利服务器,反向代理了多台真实的业务处理服务器。

在这里插入图片描述

3、负载均衡:

客户端发送的、Nginx反向代理服务器接收到的请求数量,就是我们说的负载量。请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则。所以将服务器接收到的请求按照规则分发的过程,称为负载均衡。

负载均衡在实际项目操作过程中,有硬件负载均衡和软件负载均衡两种,硬件负载均衡也称为硬负载,如F5负载均衡,相对造价昂贵成本较高,但是数据的稳定性安全性等等有非常好的保障,如中国移动中国联通这样土豪的的公司才会选择硬负载进行操作;更多的公司考虑到成本原因,会选择使用软件负载均衡,软件负载均衡是利用现有的技术结合主机硬件实现的一种消息队列分发机制。

负载均衡多在高并发情况下需要使用。其原理就是将大量用户的请求分配给多台服务器处理,减轻每台服务器的压力,多台服务器(集群)共同完成工作任务,从而提高了数据的吞吐量。同时带来的好处是,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。

在这里插入图片描述

高并发:高并发是指在同一个时间点,有很多用户同时的访问URL地址,比如:淘宝的双11,双12,就会产生高并发,如贴吧的爆吧,就是恶意的高并发请求,也就是DDOS攻击。

四、Nginx的安装与配置

1、windows下

<1> 下载

这里提供两种下载方式。
官方地址:点我
本人网盘下载好的1.15.2版本地址:点我 提取码:mw13

<2> 解压

下载好以后,我们把压缩包解压到我们之前创建好的文件夹下。这里我们是解压到了 C:\Users\tools,当然大家可以在c盘随便找个目录都行。
在这里插入图片描述

<3> 启动

打开cmd,切换到Nginx的安装路径下,使用CMD命令start命令启动nginx,启动的瞬间,会有画面一闪而过,正常现象!

在这里插入图片描述

启动成功后,浏览器访问 localhost,即可看到Nginx 欢迎页

在这里插入图片描述

如果启动启动失败,可能是某个程序占用了80端口。去掉该程序监听的80端口即可。如何去掉该端口,参考该文:点我

<4> 配置

Nginx所有配置文件都在Nginx根目录conf子目录中(C:\Tools\Nginx\conf)其中Nginx核心配置文件是:C:\Tools\Nginx\conf\nginx.conf
在这里插入图片描述

我们的常用配置只需要在nginx.conf中调整server节点就可以了,在nginx.conf文件末尾有如下示例,这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。

# HTTPS server
#
# server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}

负载均衡、反向代理可以直接在上述模板后边配置即可

  • 反向代理

server {
listen 80; #监听80端口
server_name test.com; #监听的域名
location / { #转发或处理
proxy_pass https://test.com;
}
error_page 500 502 503 504 /50x.html;#错误页
location = /50x.html {
root /usr/share/nginx/html;
}
}

修改C:\Windows\System32\drivers\etc\hosts文件将测试域名指向本机IP

在这里插入图片描述
浏览器访问对应的域名即可验证。

在这里插入图片描述

linux下的安装与配置,大家有兴趣可以自己上网查资料,我这里就不解释了。

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值