knight_ka | 生活及学习笔记

Nginx1-负载均衡介绍及Nginx认识

负载均衡概述

负载均衡概述:

负载均衡的方式:

1.WEB页面展示出所有的服务器,供用户自己选择,从而达到了负载均衡的目的。如:一些软件下载网站的下载地址

2.通过在域名解析处配置多个A级地址,DNS轮询这个A级地址,从而达到了负载均衡的目的。

弊端:1.可靠性低,如果一台服务器宕机,所有dns解析到这个ip的用户则无法访问。2.负载分配不均衡:本地DNS服务器会缓存已解析的域名到ip的映射,本地计算机也会缓存解析结果,这个用户一段时间内访问到的ip永远是同一个。

3.现在常用的负载均衡技术:

硬件:F5 BIG-IP

软件:Nginx,Apache,lvs等

Nginx概述

Nginx是一个Web服务器。它的优点有很多,1.支持很高的并发量 2.内存消耗小 3.成本低 4.稳定性高 5.功能丰富。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
1.Nginx可以配置多个虚拟主机,每个虚拟主机就相当于一个独立的网站。
虚拟主机可以根据域名、ip、端口进行配置。
1.1根据IP配置多个虚拟主机:就是多个虚拟ip对应同一台主机,在这台机器上安装nginx用来接收客户端的请求,然后根据客户端请求的ip进行不同的处理,对应不同的虚拟主机。
1.2根据域名配置多个虚拟主机:就是多个域名对应同一个ip,在这个ip的主机上安装nginx,然后根据不同的域名进行不同的处理,对应不同的虚拟主机。
1.3根据端口号进行配置,当前主机监听本地的不同端口,根据用户请求的端口不同对应不同的虚拟主机
2.Nginx的配置文件:
Nginx的配置文件主要分为4部分:
main --全局配置
upstarem —主要为反向代理负载均衡相关配置
server —虚拟主机配置
location --目录匹配配置
... #全局块
events { #events块
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}
其中全局配置是一些nginx的全局配置,可以配置用户和组,工作进程数等。
upstream是上游服务器组,主要是负载均衡的服务器组,配置权重,失败次数,超时时间等。
server配置,每个server代表一个虚拟主机。
Location 用于在server中匹配url的目录,针对不同的目录可以跳转不同的服务器组等。

Nginx的优化:
如果后端是tomcat,java服务器,可能要用到的优化点:

1.gzip压缩技术。对静态资源的压缩,减小数据量,利于更快的响应客户端

2.浏览器缓存的优化,可以用location配置,对一些静态资源进行浏览器缓存的优化,如:匹配jpg,jpeg/png/awt等图片或者视频使浏览器缓存30天,对css,js等资源文件缓存1天等,用expire 30d;进行配置。

3.可以对请求头大小,请求体大小进行限制

4.请求的MIME类型限制

5.nginx本地的WEB缓存proxy_cache模块进行缓存。这样就可以是客户端直接可以从nginx服务器上拿取资源,而不用请求后端服务器。

6.rewrite功能,1.为了实现搜索引擎的抓取,用rewrite伪静态处理,url重写。2.假如之前的一些链接已经不使用了,但是想把它们跳转到一个新链接中,可以使用rewrite直接url重写,然后跳转后端服务器。

7.Https支持

8.动静分离。

Nginx的一个虚拟主机可以代表一个独立的网站服务器。虚拟主机可以根据IP、域名、端口进行配置。
listen和servername进行配置。

Nginx的模块:

核心模块

标准http模块

可选http模块

邮件模块

第三方模块

补丁

Nginx有模块的说法,可以进行nginx的模块开发,nginx的模块不能动态加载,必须要在安装nginx的时候把开发的模块预编译进去,来实现想达到的效果:如增加缓存,一些简单的web应用程序等。

Nginx模块有三种角色:

1.Handlers (处理模块) —-用于处理HTTP请求并输出内容

2.Filters (过滤模块) ——用于过滤Handler输出的内容

3.Load-balancers (负载均衡模块) ——当有多于一台的后端服务器供选择时,选择一台后端服务器并将HTTP请求转发到该服务器。