一. Nginx介绍
1. Nginx到底是什么,干什么用?
Nginx是一个 轻量级/高性能的反向代理Web服务器,它是由C语言写的,所以速度非常快、性能非常优秀。它的主要功能就是反向代理、负载均衡、配置SSL证书、防盗链、解决跨域问题、缓存、限流、动静资源分离等等。
上面介绍了Nginx是一台Web服务器,实际上,他并不是一台真正意义上的物理机服务器,并不是主观上真实存在的实体,它是运行在某一台服务器(电脑)上的软件。
那为什么还说它是一台Web服务器呢?我们先来理解一下什么是网关,大家都知道,从一个房间进入另一个房间内,必须经过一个门,就像经过一个“关口”,那从一个网络发送一个信息到另一个网络,也必须经过一个“关口”,这个关口就可以说是网关。这个关口并不是摆在那里那么简单,关口可以自行决定允不允许让你的消息通过,或者决定是否替你转发和接收消息、把消息分发给其他人,或者帮你的消息添加和预处理一些信息,或者替你回答消息等等功能。
而Nginx就相当于这个网关,转发和接收消息就相当于反向代理,把消息分发给其他人就相当于负载均衡。当我们的服务器(电脑)上安装了Nginx这个软件,通过一些简单的配置并运行这个软件,我们在服务器上运行的项目(例如Java程序)在接收Http请求的时候,这个请求就会被Nginx这个网关先拦截,经过一些上述的处理之后再交给Java程序,此时Nginx就充当了一个网关。因为外网用户的所有请求都会先经过Nginx,所以对于外网的用户来说,他们的请求都是发送给Nginx的,再由Nginx发送给Java程序处理后再发还给用户,那么从用户的角度来看,Nginx就相当于一台服务器在接收和回复用户发送的消息,所以也可以理解为Nginx是一台Web服务器。
2. 为什么要用Nginx?
Nginx跨平台,配置简单。我们可以在Linux系统和windows系统上都开启Nginx服务,配置也非常简单,在linux上,我们通常只需要修改三四行代码,既可以完成对项目的配置。当后端程序重构或者重新部署,例如由Java项目换成go项目,也不需要修改Nginx。