一、Nginx是什么
Nginx ("engine x") 是一个开源的,支持高性能、高并发的 Web 服务和代理服务软件。它是由俄罗斯人 Igor Sysoev 开发的,最初被应用在俄罗斯的大型网站 www.rambler.ru 上。后来作者将源代码以类 BSD 许可的形式开源出来供全球使用。
Nginx 的官方介绍见 nginx
Nginx 中文介绍见 nginx
二、Nginx 基本特性
- 可针对静态资源高速高并发访问及缓存。
- 可使用反向代理加速,并且可进行数据缓存。
- 具有简单负载均衡、节点健康检查和容错功能。
- 支持远程 FastCGI 服务的缓存加速。
- 支持 FastCGI、Uwsgi、SCGI、Memcached Servers 的加速和缓存。
- 支持SSL、TLS、SNI。
- 具有模块化的架构:过滤器包括 gzip 压缩、ranges 支持、chunked 响应、XSLT、SSI 及图像缩放等功能。在SSI 过滤中,一个包含多个 SSI 的页面,如果经由 FastCGI 或反向代理,可被并行处理。
三、Nginx Web 服务特性
- 支持基于名字、端口及IP的多虚拟主机站点。
- 支持 Keep-alive 和 pipelined 连接。
- 可进行简单、方便、灵活的配置和管理。
- 支持修改 Nginx 配置,并且在代码上线时,可平滑重启,不中断业务访问。
- 可自定义访问日志格式,临时缓冲写日志操作,快速日志轮询及通过 rsyslog 处理日志。
- 可利用信号控制 Nginx 进程。
- 支持 3xx-5xx HTTP状态码重定向。
- 支持 rewrite 模块,支持 URI 重写及正则表达式匹配。
- 支持基于客户端 IP 地址和 HTTP 基本认证的访问控制。
- 支持 PUT、DELETE、MKCOL、COPY 及 MOVE 等特殊的 HTTP 请求方法。
- 支持 FLV 流和 MP4 流技术产品应用。
- 支持 HTTP 响应速率限制。
- 支持同一 IP 地址的并发连接或请求数限制。
- 支持邮件服务代理。
下图显示了 𝐟𝐨𝐫𝐰𝐚𝐫𝐝 𝐩𝐫𝐨𝐱𝐲 和 𝐫𝐞𝐯𝐞𝐫𝐬𝐞 𝐩𝐫𝐨𝐱𝐲 之间的差异。
转发代理是位于用户设备和互联网之间的服务器。
转发代理通常用于:
- 保护客户
- 规避浏览限制
- 阻止访问某些内容
反向代理是一种服务器,它接受客户端的请求,将请求转发到 Web 服务器,并将结果返回给客户端,就好像代理服务器已经处理了请求一样。
反向代理适用于:
- 保护服务器
- 负载均衡
- 缓存静态内容
- 加密和解密 SSL 通信
四、常见的负载均衡算法有哪些?
负载均衡算法用于分配网络或应用程序的入口流量到多个服务器,以确保每个服务器获得合理的负载,提高系统的性能和可用性。以下是一些常见的负载均衡算法:
-
轮询(Round Robin):
- 请求按顺序分配给每个服务器,确保每个服务器都平均分担负载。
-
最小连接数(Least Connections):
- 请求分配给当前连接数最少的服务器。适用于连接数是负载的主要因素的情况。
-
最短响应时间(Least Response Time):
- 请求分配给响应时间最短的服务器,通常基于服务器的实时性能。
-
哈希法(Hashing):
- 将请求的某些属性(如IP地址、URL等)哈希为一个固定范围的值,然后将请求分配给对应的服务器。
-
IP哈希法(IP Hash):
- 使用请求的源IP地址进行哈希,确保同一客户端的请求始终被分配到同一台服务器。
-
加权轮询(Weighted Round Robin):
- 给每个服务器分配一个权重值,高权重服务器接收到的请求多于低权重服务器。
-
加权最小连接数(Weighted Least Connections):
- 结合了轮询和最小连接数算法,给每个服务器分配权重,然后按权重选择最少连接的服务器。
-
随机算法(Random):
- 随机选择一个服务器来处理请求,适用于负载较轻的情况。
-
最少请求(Least Request):
- 将请求分配给当前积压请求数最少的服务器,以确保请求被平均分配。
这些算法可以单独使用或结合使用,具体选择取决于应用程序的特性和负载均衡的要求