Nginx系列教程(04) - 基础理论

简介: Nginx系列教程(04) - 基础理论

1.负载均衡

学习Nginx之前,我们先来了解一个概念“负载均衡”:

  • 负载均衡 :建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
  • 负载均衡 :英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

当然负载均衡也有它的缺点:

使用负载均衡后,实际用到的服务器会被集群多台,那么这时候就会产生很多分布式相关问题,比如:

  • 分布式Session一致性问题
  • 分布式定时任务调度幂等性问题
  • 分布式生成全局订单ID

如果想更加深入的理解负载均衡,可以参考文章:《快速理解负载均衡技术原理》

那么要做到负载均衡,那么有什么解决方案呢?

没错,首选Nginx

2.Nginx

2.1 Nginx是什么?

1. Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师IgorSysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好.中国大陆使用nginx网站用户有:新浪、网易、腾讯等。


2. Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性: 作为 Web 服务器:相比Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型。


3. 作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。


4. 作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器 (最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。


5.Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器:

Nginx启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在

不间断服务的情况下进行软件版本的升级。


6. Nginx一般用户七层负载均衡,其吞吐量有一定的限制。为了提高整体的吞吐量,会在DNS和Nginx之间引入LVS(软件负载均衡器)、F5(硬负载均衡器)可以做四层负载均衡,首先DNS解析到LVS(F5),让后LVS(F5)转发给Nginx,再有Nginx转发给真实的服务器。

2.1.1 网络模型图
OSI中的层 功能 TCP/IP协议族
应用层 文件传输、电子邮件、文件服务、虚拟终端 TFTP、HTTP、SNMP、FTP、SMTP、DNS、RIP、Telnet
表示层 数据格式化、代码转换、数据加密 没有协议
会话层 接触或建立与别的节点联系 没有协议
传输层 提供端对端的接口 TCP、UDP
网络层 为数据包选择路由 IP、ICMP、OSPF、BGP、IGMP、ARP、RARP
数据链路层 传输有地址的帧以及错误检测功能 SLIP、CSLIP、PPP、MTU、ARP、RARP
物理层 以二进制数据形式在物理媒体上传输数据 ISO2110、IEEE802、IEEE802.2
2.1.2 四层和七层负载均衡的区别
  • 四层负载均衡,在网络模型中的传输层中,基于主要是基于tcp协议报文实现负载均衡(比如LVS、haproxy就是四层负载均衡器),使用改写报文的源地址和目的地址。
  • 七层负载均衡,在网络模型中应用层中,基于URL或者HTTP协议实现负载均衡,Web服务器。
2.1.3 Nginx配置负载均衡
  1. Nginx负载均衡提供上游服务器(真实业务逻辑访问的服务器),负载均衡、故障转移、失败重试、容错、健康检查等。
  2. 上游服务器(真实业务逻辑访问的服务器) 发生故障时,可以转移到其他上游服务器(真实业务逻辑访问的服务器)。

2.2 Nginx应用场景

1. http服务器:Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。


2. 虚拟主机:可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。


3. 反向代理,负载均衡:当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。


4. nginx 中也可以配置安全管理、比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截。

2.3 Nginx目录结构

进入nginx安装目录,我们可以看到目录结构:

Nginx-
|_  conf   配置目录
|_  contrib
|_  docs 文档目录
|_  logs  日志目录
|_  temp 临时文件目录
|_  html 静态页面目录
|_  nginx.exe 主程序

如果要进行静态资源访问,可以把静态资源存放在nginx的html页面。

3.知识回顾

另外,Nginx在《分布式电商项目》里有讲过,如果没有Nginx基础的同学,可以按以下顺序阅读(回顾即可),接下来的文章也会详细讲解:

哈哈,其实博主也忘记的七七八八了,也是需要重新搭建环境回顾下😀

手比眼高,多实践,知行合一才能对知识有一个更全面理解,才会提升自己的知识高度!

总结

目录
相关文章
|
3月前
|
Kubernetes 应用服务中间件 nginx
百度搜索:蓝易云【使用Kubernetes部署Nginx应用教程】
现在,你已经成功在Kubernetes集群上部署了Nginx应用。通过访问Service的外部IP地址,你可以访问Nginx服务。
42 4
|
4月前
|
负载均衡 应用服务中间件 nginx
百度搜索:蓝易云【Nginx和tomcat实现负载均衡教程】
至此,你已经成功地使用Nginx和Tomcat实现了负载均衡。Nginx将根据配置的负载均衡策略将客户端请求分发到多个Tomcat服务器上,以提高系统的性能和可用性。请注意,在实际生产环境中,还需要进行其他配置和优化,如健康检查、会话保持等,以满足具体的需求。
35 0
|
4月前
|
安全 应用服务中间件 nginx
百度搜索:蓝易云【使用Debian、Docker和Nginx部署Web应用教程】
这些是在Debian上使用Docker和Nginx部署Web应用的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
45 0
|
4月前
|
负载均衡 安全 前端开发
百度搜索:蓝易云【Nginx与Tomcat负载均衡-动静分离教程】
这些是将Nginx与Tomcat结合使用实现负载均衡和动静分离的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
49 1
|
5月前
|
应用服务中间件 网络安全 nginx
百度搜索:蓝易云【docker搭建nginx教程】
现在,你的Nginx容器已经成功运行。你可以通过访问服务器的IP地址或域名来访问Nginx服务。请确保服务器的防火墙允许访问80端口。
68 0
|
5月前
|
应用服务中间件 Linux nginx
centos离线安装nginx详细教程
centos离线安装nginx详细教程
351 0
|
6月前
|
缓存 前端开发 JavaScript
Nginx系列教程(15) - 动静分离概念
Nginx系列教程(15) - 动静分离概念
43 0
|
6月前
|
负载均衡 网络协议 算法
Nginx系列教程(13) - TCP反向代理实现
Nginx系列教程(13) - TCP反向代理实现
465 0
|
6月前
|
负载均衡 应用服务中间件 Linux
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
197 0
|
5月前
|
JavaScript 应用服务中间件 nginx