Nginx高性能Web服务器实战教程--读书笔记(三)

第五章 Web服务器搭建(略)

第六章 负载均衡与缓存
1 正向代理与反向代理
1)安全性。正向代理的客户端能够在隐藏自身的同时访问任意网站,这给网络安全带来了极大的威胁。反响代理的客户端只能通过外网来访问代理服务器,并且用户不知道自己访问的是一个代理服务器,好处是反向代理将真正的处理放在内网中,有效的提高了网络的安全性。
2)功能性。正向代理的主要途径是为在防火墙内的局域网用户提供访问Internet的途径。而反向代理的主要途径是将防火墙上的服务器提供给Internet用户访问,还可以为多个后端服务器提供负载均衡功能、缓存功能。

2 反向代理配置
1)准备服务器
192.168.78.3 192.168.78.128 192.168.78.200

2)配置反向代理
编辑hosts文件,添加以下内容:
在这里插入图片描述
配置nginx.conf,添加以下内容
在这里插入图片描述
完成上述配置后,当用户请求http://test.ng.test或者http://test,web.com时就会被反向代理服务器转发到后端的Web服务器192.168.78.128 或 192.168.78.200中进行处理

3)其他常用反向代理指令
在这里插入图片描述
示例:将客户端ip传递给后端服务器
在这里插入图片描述
在这里插入图片描述
3 负载均衡:将负载分摊到多个操作单元上执行,从而提高服务的可用性和响应速度,更用户带来更好的体验。
在这里插入图片描述
3.1 负载均衡的配置
在这里插入图片描述
1)一般轮询负载均衡
a) 三台服务器:192.168.78.3 192.168.78.128 192.168.78.200
b)配置一般轮询负载均衡
在这里插入图片描述
解释:第六行用于自定代理的url。upstream指令后的web_server表示代理的服务器主机名,用于第六行的proxy_pass指令执行反向代理时使用,第11-12行利用server指令在upstream块中配置了后端web服务器,这些服务器可以有多个或一个

2)加权轮询负载均衡
解释:四次请求会有三次在192.168.78.200中执行(三次执行的顺序并不连续,而是按照算法分散执行),一次在192.168.78.128中执行

weight以外的常用参数:
在这里插入图片描述
示例:
在这里插入图片描述
关闭 128和200后访问http://test.ng.test,访问将会在201上执行。如果去掉备份服务器,再次访问将会出现如下错误:
在这里插入图片描述
3)ip_hash负载均衡
将每个请求按照访问IP的hash结果分配,这样就可以使来自同一个IP的客户端用户固定访问一台web服务器,有效的解决了动态网页存在的session共享问题。示例如下:
在这里插入图片描述
解释:ip_hash用于标识当前负载均衡的处理方式,对于一个暂时性宕机的服务器,可以使用down标识出来,负载均衡时会忽略该服务器。
注意:在使用ip_hash方式负载均衡时,不能使用weight和backup方式设置
4)利用第三方模块fair
在这里插入图片描述
4 缓存配置
1)缓存原理:Web缓存服务器位于web服务器和客户端之间,当用户访问一个URL时,Web服务器会请求相应的内容源Web服务器,并将相应的内容缓存在内存或硬盘中。然后,当下一个到来时,如果是相同的url,缓存服务器会直接将缓存的内容返回给用户,而不会再次向web服务器发送请求。

2)永久缓存配置
a)服务器:192.168.78.3 192.168.78.128
server{
listen 80;
server_name 192.168.78.3;
location / {
root cache;//指定缓存文件的保存目录,这里将其设定在Nginx安装目录下的cache目录中,需要手动创建,创建后修改此目录的权限,要求于Nginx工作进程的用户相同(如nobody);
proxy_store on;//开启本地缓存
proxy_store_access user:rw group:rw all:r; //设置缓存读写规则
proxy_temp_path cache_tmp;//设置反向代理时接收的数据临时文件的目录,该目录会由Nginx在配置生效后自动创建。
proxy_pass http://192.168.78.128
}
}

注意:上述配置虽然能够将文件缓存到本地,但是客户每次请求,nginx仍会向后端服务器获取文件。为避免此种情况,还需先判断缓存文件是否存在,具体配置如下:
在这里插入图片描述
!-e表示检查一个文件是否存在,当不存在时就执行{}中的命令。其中内置变量 r e q u e s t f i l e n a m e U R I h t t p : / / 192.168.78.3 / t e s t / i n d e x . h t m l request_filename表示当前请求的文件路径或者URI。如请求为http://192.168.78.3/test/index.html时, request_filename为/test/index.htm,如果缓存中没有请求的缓存文件,Nginx将会到http://192.168.78.128/test/index.html中寻找资源相应用户,并缓存文件。

3)临时缓存配置
a)服务器:192.168.78.3 192.168.78.128
b)缓存配置
在这里插入图片描述
解释:第二行指令用户设置缓存服务器(192.168.78.3)接收内容源服务器相应内容时使用的临时目录。第四行指令用户设置缓存目录。其中proxy_cache_path指令相关含义如下:
/usr/local/nginx/proxy_temp_dir参数:表示用户自定义的缓存文件保存目录。
levels参数:表示缓存目录下的层级目录结构,它是根据哈希后的请求URL地址创建的,目录名称从哈希后的字符串结尾处开始截取。
keys_zone参数:指定缓存区的大小及名称。cache_one:50m表示缓存区名称为cache_one,大小为50m。
inactive参数:表示主动清空在指定时间内未被访问的缓存,1m表示一分钟内。
max_size参数,表示指定磁盘空间大小,如500m
c)在server块中添加临时缓存的配置如下:
在这里插入图片描述
解释:第13-16行设置,通过proxy_cache_valid指令对不同的HTTP状态码设置不同的缓存时间,该指令的第一个参数表示状态码,第二个参数表示缓存时间。
proxy_cache_key指令参数的具体内置变量说明如下:
$host:服务器的域名,如test.ng.test
$uri:域名和参数之间的部分,如/index.html
$is_args:有URL参数时,则值为?,否则为空字符串
KaTeX parse error: Expected 'EOF', got '&' at position 18: …gs:保存URL参数,如a=1&̲b=2,没有参数时为空字符串 …is_args和$args,可以实现根据不同URL参数缓存不同文件

为了便于在浏览器中查看是否正确缓存,第5-6行通过add_header指令添加了两个响应消息头。其中X-Via表示服务器地址,利用内置变量 s e r v e r a d d r X C a c h e server_addr获取,另一个X-Cache表示资源缓存状态,利用内置变量 upstream_cache_status获取。$upstream_cache_status的返回值有7个如下:
在这里插入图片描述
注意:仅在处理成功的情况下,才会在浏览器的响应头中看到add_header指令设置的响应头
在这里插入图片描述
d)常用缓存配置指令
在这里插入图片描述
4)缓存清理配置
a>下载安装ngx_cache_purge
下载地址:https://githu.com/FRiCKLE/ngx_cache_purge/releases
下载完成后上传至root目录,并重命名为ngx_cache_purge,指令如下:
在这里插入图片描述
在./configure时添加对nginx-cache-purge模块的支持,完成Nginx编译选项的配置,命令如下:
在这里插入图片描述
b>配置缓存清理功能
安装ngx_cache_purge模块后,就可以使用该插件的指令实现缓存清理。使用时有如下规则:
》指定的缓存区名称要与proxy_cache_path指令中出现的缓存区名称一致
》指定的key值组成规则,要与proxy_cache_key指令设置的规则相同。
》清理缓存的location编写位置,要在server块中所有location之前,防止其他正则location提前匹配。
nginx.conf配置如下:
在这里插入图片描述
上述第一行,用于以正则表达式匹配用户的请求,请求地址符合/purge/url形式时,就会清理URI对应的缓存文件。第2-3行用于指定允许清理缓存的客户端,此处表示仅允许IP地址为192.168.78.1的客户端清理缓存。第4行通过proxy_cache_purge指令,指定名称cache_one的缓存区,和待清理缓存文件的key值组成规则。其中, 1 l o c a t i o n ( . / ) K e y 1表示location正则表达式中的子模式“(./)”的匹配结果,对应生成缓存Key时的 uri

5 邮件服务
1)邮件服务相关模块
在这里插入图片描述
在邮件代理服务配置前,首先重新编译安装Nginx,添加对邮件的支持,主要配置指令如下:
在这里插入图片描述
解释:–with-mail用于安装上表中前六种邮件模块,表示允许POP3,IMAP和SMTP代理,–with-mail-ssl-module表示使用安全模式传输模式完成邮件服务。按照上述配置后,再执行make && make install重新安装编译。完成上述操作后,即可在Nginx的配置文件中进行邮件配置。
2)常用邮件配置方式
在这里插入图片描述
在这里插入图片描述
解释:第三行用于指定Nginx提供邮件代理服务器时的HTTP认证服务器地址。第五行用来配置Nginx服务器代理缓存的大小。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/musi_m/article/details/88806041