Nginx的特点

  1. 内存占用非常少
  2. 高并发
  3. 跨平台
  4. 扩展性好:第三方插件非常多
  5. 安装使用简单
  6. 稳定性好
  7. 开源软件,免费试用
  8. ……

Nginx用途

静态资源服务器

Nginx可以将服务器上的静态文件缓存下来,通过HTTP协议展现给客户端。因此可以使用Nginx搭建静态资源Web服务器/缓存服务器。

当客户端第一次请求静态资源的时候,会从服务器直接返回,Nginx同时也会缓存一份静态资源。如果后续客户端请求相同的静态资源,只要对应的缓存未被清理且没有过期,就可以直接从Nginx缓存中取出返回给客户端了。

记得开启Gzip压缩。这样可以使网站的图片、CSS、JS等文件在传输时进行压缩,提高访问速度,优化Nginx性能。

反向代理

客户端将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器,获取数据后再返回给客户端。对外暴露的是反向代理服务器地址,隐藏了真实服务器IP地址。反向代理“代理”的是目标服务器,这一个过程对于客户端而言是透明的。

反向代理隐藏了真实的服务器,为服务器收发请求,使真实服务器对客户端不可见。一般在处理跨域请求对时候比较常用。

Nginx支持配置反向代理,通过反向代理实现网站的负载均衡。

1663714882583-34b5aa6c-9e30-4e5a-8091-60deb426fccf

正向代理

客户端通过正向代理访问目标服务器。争相代理「代理」的是客户端,目标服务器不知道客户端是谁,也就是说客户端对目标服务器的这次访问是透明的。

举个例子,翻墙工具。翻墙工具会把访问外网服务器的客户端请求代理到一个可以直接访问外网的代理服务器上去。代理服务器会把外网服务器返回的内容再转发给客户端。

外网服务器并不知道客户端是通过VPN访问的。

1663714859113-dc74d138-aa03-4c7c-bbe4-aa210a4e1728

负载均衡

如果一台服务器处理用户请求处理不过来的话,一个简单的办法就是增加多台服务器「服务器集群」部署相同的服务来处理用户请求。

Nginx可以将接收到的客户端请求以一定的规则均匀地分配到这个服务器集群中所有的服务器上,这个就叫做负载均衡。

除此之外,Nginx还带有健康检查「服务器心跳检查」功能,会定期轮询向集群里的所有服务器发送健康检查请求,来检查集群中是否有服务器处于异常状态。

Nginx负载均衡策略

轮询

较为基础也较为简单,默认。

如果没有配置权重的话,每个请求按时间顺序逐一分配到不同的服务器处理。

如果配置权重的话,权重越高的服务器被访问的概率就越大。

IP哈希

根据发出请求的和客户端IP的hash值来分配服务器,可以保重同IP发出的请求映射到同一服务器,或者具有相同hash值的不同IP映射到同一服务器。

可以配置权重。该算法在一定程度上解决了集群部署环境下Session不共享的问题。

最小连接数

当有新的请求出现时,遍历服务器节点列表并选取其中活动连接数最小的一台服务器来响应当前请求。活动连接数可以理解为当前正在处理的请求数。

常用命令

  • 启动 nginx

  • 停止 nginx -s stop 或者 nginx -s quit

  • 重载配置 service nginx reload

  • 查看nginx版本 nginx -v

  • 显示帮助信息 nginx -h

Nginx进程模型

Nginx启动后,会产生一个master主进程。主进程执行一系列的工作后会产生一个或者多个工作进程worker进程。master进程用来管理worker进程,worker进程负责处理网络请求。也就是说Nginx采用的是经典的master-workder模型的多进程模型