Nginx 介绍
Nginx 介绍
Nginx 是一个自由、开源、高性能及轻量级的 HTTP 服务器和反向代理服务器,它有很多功能,主要功能为:
- 正向代理
- 反向代理
- 负载均衡
- HTTP 服务器(包含动静分离)
本文使用 Nginx 反向代理和负载均衡的功能。
Nginx 的更详细介绍可以参考 nginx简易教程。
Nginx 反向代理功能
Nginx 最常用的功能之一是作为一个反向代理服务器。反向代理(Reverse Proxy)是指以代理服务器来接收 Internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器(摘自百度百科)。
为什么需要反向代理呢?在实际的生产环境中,服务部署的网络(内网)跟外部网络(外网)通常是不通的,需要通过一台既能够访问内网又能够访问外网的服务器来做中转,这种服务器就是反向代理服务器。Nginx 作为反向代理服务器,简单的配置如下:
1 | server { |
Nginx 在做反向代理服务器时,能够根据不同的配置规则转发到后端不同的服务器上。
Nginx 负载均衡功能
Nginx 另一个常用的功能是负载均衡,所谓的负载均衡就是指当 Nginx 收到一个 HTTP 请求后,会根据负载策略将请求转发到不同的后端服务器上。比如,apiserver 部署在两台服务器 A 和 B 上,当请求到达 Nginx 后,Nginx 会根据 A 和 B 服务器上的负载情况,将请求转发到负载较小的那台服务器上。这里要求 Standard 是无状态的服务。
Nginx 常用命令
Nginx 常用命令如下(执行 which nginx 可以找到 Nginx 命令所在的路径):
1 | nginx -s stop 快速关闭 Nginx,可能不保存相关信息,并迅速终止 Web 服务 |
Nginx 默认监听 80 端口,启动 Nginx 前要确保 80 端口没有被占用。当然你也可以通过修改 Nginx 配置文件 /etc/nginx/nginx.conf 改 Nginx 监听端口。
负载均衡调度算法:
- weight轮询(默认):
接收到的请求按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,
nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。
这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;
权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。
- weight轮询(默认):
- ip_hash:
每个请求按照发起客户端的ip的hash结果进行匹配,
这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。
- ip_hash:
- fair:
智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,
响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。
但是需要注意的是nginx默认不支持fair算法,如果要使用这种调度算法,请安装upstream_fair模块
- fair:
- url_hash:
按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,
可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意nginx默认不支持这种调度算法,要使用的话需要安装nginx的hash软
- url_hash: