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时, requestfilenameURIhttp://192.168.78.3/test/index.htmlrequest_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表示资源缓存状态,利用内置变量 serveraddrXCacheupstream_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时的 1location(./)Keyuri

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

实战Nginx:取代Apache的高性能Web服务器 作者: 张宴 出版社: 电子工业出版社 出版年: 2010年2月 内容简介   Nginx (“engine x”) 是俄罗斯人Igor Sysoev编写的一款高性能HTTP 和反向代理服务器Nginx选择了epoll和kqueue作为网络I/O模型,在高连接并发的情况下,Nginx是Apache服务器不错的替代品,它能够支持高达50 000个并发连接数的响应,运行稳定,且内存、CPU等系统资源消耗非常低。   本书主要分为4个部分,第1部分为基础篇,介绍了Nginx服务器的安装与配置方法;第2部分为进阶篇,重点介绍了Nginx的配置优化方法、Nginx与PHP/Ruby/Python/JSP/Perl/Memcached的结合配置方法、Nginx HTTP反向代理与负载均衡的配置与优化、Nginx模块开发等,最后还分析了新浪的开源软件项目──基于Nginx的NCache网页缓存系统;第3部分为实战篇,分析了Nginx在国内知名网站(如新浪播客、搜狐博客等)中的应用案例;第4部分为模块篇,对Nginx的基本模块和第方模块进行了集中介绍。   本书是为对配置管理Nginx服务器感兴趣的读者准备的,适用于以前没有接触过Nginx,或者对Nginx有一些了解并希望能够进一步深入学习的专业系统工程师、个人网站站长及Linux/Unix从业人员。   作者简介   张宴,就职于北京金山软件公司,金山游戏官方网站──逍遥网(xoyo.com)系统架构师,技术支持部平台组组长。曾在新浪网、赶集网等公司任系统工程师、系统架构师,工作内容主要涉及:服务器系统架构设计与部署、系统运维与调优、网络故障解决、网站后端以及接口类PHP程序开发、Unix开源软件二次开发、服务器监控系统开发、系统运维与平台研发团队管理。 第1章 Nginx简介.pdf 第2章 Nginx服务器的安装与配置.pdf 第3章 Nginx的基本配置与优化.pdf 第4章 Nginx与PHP(FastCGI)的安装、配置与优化.pdf 第5章 Nginx与JSP、ASP.NET、Perl的安装与配置.pdf 第6章 Nginx HTTP负载均衡和反向代理的配置与优化.pdf 第7章 Nginx的Rewrite规则与实例.pdf 第8章 Nginx模块开发.pdf 第9章 NginxWeb缓存服务与新浪网的开源NCACHE模块.pdf 第10章 Nginx在国内知名网站中的应用案例.pdf 第11章 Nginx的非典型应用实例.pdf 第12章 Nginx的核心模块.pdf 第13章 Nginx的标准HTTP模块.pdf 第14章 Nginx的其他HTTP模块.pdf 第15章 Nginx的邮件模块.pdf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值