高能Web服务器Nginx及相关新技术的应用实践ppt课件_第1页
高能Web服务器Nginx及相关新技术的应用实践ppt课件_第2页
高能Web服务器Nginx及相关新技术的应用实践ppt课件_第3页
高能Web服务器Nginx及相关新技术的应用实践ppt课件_第4页
高能Web服务器Nginx及相关新技术的应用实践ppt课件_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、高性能高性能Web效力器效力器Nginx及相关新技术的运用实际及相关新技术的运用实际 北京金山软件 逍遥网 张宴 2020.10什么是什么是Nginx? Nginx Nginx “engine x“engine x 是俄罗斯人是俄罗斯人Igor Igor SysoevSysoev塞索耶夫编写的一款高性能的塞索耶夫编写的一款高性能的 和反和反向代理效力器。向代理效力器。 Nginx Nginx 曾经在俄罗斯最大的门户网站曾经在俄罗斯最大的门户网站 Rambler MediaRambler Media rambler.ru rambler.ru上运转了上运转了4 4年年时间,同时俄罗斯超越时间,同

2、时俄罗斯超越20%20%的虚拟主机平台采用的虚拟主机平台采用NginxNginx作为反向代理效力器。作为反向代理效力器。 在国内,曾经有新浪博客、新浪播客、搜狐通行在国内,曾经有新浪博客、新浪播客、搜狐通行证、网易新闻、网易博客、金山逍遥网、金山爱证、网易新闻、网易博客、金山逍遥网、金山爱词霸、校内网、词霸、校内网、YUPOOYUPOO相册、豆瓣、迅雷看看等多相册、豆瓣、迅雷看看等多家网站、频道运用家网站、频道运用 Nginx Nginx 效力器。效力器。Nginx的优点的优点 1 1、高并发衔接:官方测试可以支撑、高并发衔接:官方测试可以支撑5 5万并发衔万并发衔接,在实践消费环境中跑到接,

3、在实践消费环境中跑到2 23 3万并发衔接数。万并发衔接数。 2 2、内存耗费少:在、内存耗费少:在3 3万并发衔接下,开启的万并发衔接下,开启的1010个个Nginx Nginx 进程才耗费进程才耗费150M150M内存内存15M15M* *10=150M10=150M。 3 3、配置文件非常简单:风格跟程序一样通俗、配置文件非常简单:风格跟程序一样通俗易懂。易懂。 4 4、本钱低廉:、本钱低廉:NginxNginx为开源软件,可以免费运为开源软件,可以免费运用。而购置用。而购置F5 BIG-IPF5 BIG-IP、NetScalerNetScaler等硬件负载等硬件负载平衡交换机那么需求十

4、多万至几十万人民币。平衡交换机那么需求十多万至几十万人民币。Nginx的优点的优点 5 5、支持、支持RewriteRewrite重写规那么:可以根据域重写规那么:可以根据域名、名、URLURL的不同,将的不同,将 恳求分到不同的后恳求分到不同的后端效力器群组。端效力器群组。 6 6、内置的安康检查功能:假设、内置的安康检查功能:假设 Nginx Nginx Proxy Proxy 后端的某台后端的某台 Web Web 效力器宕机了,不效力器宕机了,不会影响前端访问。会影响前端访问。 7 7、节省带宽:支持、节省带宽:支持 GZIP GZIP 紧缩,可以添加紧缩,可以添加阅读器本地缓存的阅读器

5、本地缓存的 Header Header 头。头。 8 8、稳定性高:用于反向代理,宕机的概率、稳定性高:用于反向代理,宕机的概率微乎其微。微乎其微。单台单台Nginx支撑了高达支撑了高达2.8万的活动并发衔接数万的活动并发衔接数2020-09-03 14:302020-09-03 14:30,金山游戏,金山游戏? ?剑侠情缘网络版剑侠情缘网络版3?3?暂时维护暂时维护1 1小时,大量玩家上官网,论坛、评论、客服等动态运用小时,大量玩家上官网,论坛、评论、客服等动态运用NginxNginx效力器集群,每台效力器的效力器集群,每台效力器的NginxNginx活动衔接数到达活动衔接数到达2.82.8

6、万,这是本人遇到的万,这是本人遇到的NginxNginx消费环境最高并发值。消费环境最高并发值。Nginx的主要运用类别的主要运用类别 1 1、运用、运用 Nginx Nginx 结合结合FastCGIFastCGI运转运转 PHP PHP、JSP JSP 、PerlPerl等程序等程序 2 2、运用、运用 Nginx Nginx 作反向代理、负载平衡、作反向代理、负载平衡、规那么过滤规那么过滤 3 3、运用、运用 Nginx Nginx 运转静态运转静态HTMLHTML页、图片页、图片 4 4、NginxNginx与其他新技术的结合运用与其他新技术的结合运用Nginx在金山逍遥网中的运用案例

7、在金山逍遥网中的运用案例 金山逍遥网xoyo 是金山游戏官方网站,为金山软件旗下的各款游戏提供新闻资讯、客户效力、在线充值、视听互动、在线活动、博客、相册、论坛、玩家社区等内容建立和在线效力支持。金山逍遥网金山逍遥网Nginx七层负载平衡的运用七层负载平衡的运用Nginx承当每个机房承当每个机房Web负载平衡效力负载平衡效力简单的简单的Nginx负载平衡配置负载平衡配置 upstream bbs_server_pool server 192.168.1.15:80 weight=1 max_fails=2 fail_timeout=30s; server 192.168.1.16:80 wei

8、ght=1 max_fails=2 fail_timeout=30s; server 192.168.1.17:80 weight=1 max_fails=2 fail_timeout=30s; server 192.168.1.18:80 weight=1 max_fails=2 fail_timeout=30s; 在nginx.conf配置文件中,用upstream指令定义一组反向代理/负载平衡后端效力器池。简单的简单的Nginx负载平衡配置负载平衡配置 server listen80; server_name bbs.yourdomain *.bbs.yourdomain ; locat

9、ion / proxy_pass bbs_server_pool; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; access_log off; 简单的简单的Nginx负载平衡配置负载平衡配置 proxy_pass bbs_server_pool; 用于指定反向代理的效力器池。 proxy_set_header Host $host; 当后端Web效力器上也配置有多个虚拟主机时,需求用该Header来区分反向代理哪个主机名。 proxy_set_header X-Forwarded-For

10、 $remote_addr; 假设后端Web效力器上的程序需求获取用户IP,请从该Header头获取。Nginx负载平衡的双机热备负载平衡的双机热备通常情况下的负载平衡HA高可用优点:实现了双机热备、缺点自动转移。优点:实现了双机热备、缺点自动转移。缺陷:备机效力器处于闲置形状,浪费了硬件资源。缺陷:备机效力器处于闲置形状,浪费了硬件资源。逍遥网逍遥网Nginx负载平衡双机互备负载平衡双机互备正常情况下,两台Nginx负载平衡效力器全部处于活动形状,对外提供效力。效力器绑定效力器绑定IP别名别名 /sbin/ifconfig eth0:ha1 61.1.1.2 broadcast 61.1.1

11、.255 netmask 255.255.255.0 up /sbin/route add -host 61.1.1.2 dev eth0:ha1 /sbin/arping -I eth0 -c 3 -s 61.1.1.2 61.1.1.1 在效力器的外网网卡eth0上,绑定了一个虚拟IP 61.1.1.2,绑定完成后发送arping包给网关。效力器绑定效力器绑定IP别名别名 /sbin/ifconfig eth0:ha2 61.1.1.3 broadcast 61.1.1.255 netmask 255.255.255.0 up /sbin/route add -host 61.1.1.3

12、dev eth0:ha2 /sbin/arping -I eth0 -c 3 -s 61.1.1.3 61.1.1.1 在效力器的外网网卡eth0上,绑定了一个虚拟IP 61.1.1.3,绑定完成后发送arping包给网关。新的新的Nginx双机互备发生缺点双机互备发生缺点时时自动接纳公网虚拟IP,实现缺点转移效力器去除效力器去除IP别名别名 /sbin/ifconfig eth0:ha1 61.1.1.2 broadcast 61.1.1.255 netmask 255.255.255.0 down 经过两台效力器之间的相互检测机制,当效力器上的检测程序发现本身的Nginx无法访问时,停顿绑

13、定虚拟IP 61.1.1.2效力器接纳原效力器的虚拟效力器接纳原效力器的虚拟IP /sbin/ifconfig eth0:ha1 61.1.1.2 broadcast 61.1.1.255 netmask 255.255.255.0 up /sbin/route add -host 61.1.1.2 dev eth0:ha1 /sbin/arping -I eth0 -c 3 -s 61.1.1.2 61.1.1.1 给网关发送Arping包,保证了网关上IP、MAC地址对应关系可以马上更改,可以做到强行接纳虚拟IP。Nginx负载平衡负载平衡URL分发分发硬件、软件七层负载平衡对比:NetS

14、caler与Nginx硬件、软件七层负载平衡对比:NetScaler与Nginx根据不同的根据不同的URL转发到不同效力器转发到不同效力器server listen 80; server_name abc.domain ; location /admincp.php proxy_pass 192.168.1.11; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; location / proxy_pass php_server_pool; proxy_set_header Host $hos

15、t; proxy_set_header X-Forwarded-For $remote_addr; Web相关文件的实时自动同步相关文件的实时自动同步少量文件的多效力器自动同步少量文件的多效力器自动同步 运用Linux 2.6内核的inotify监控Linux文件系统事件。 利用开源的lsync监听某一目录,假设目录内文件发生增、删、改,利用Rsync协议自动同步到多台效力器。 code.google /p/lsyncd/ lsyncd /data0/htdocs/hu.xoyo /data/ 192.168.5.1:hu_data/ 192.168.5.2:hu_data/ 192.168.

16、5.3:hu_data/ 192.168.5.4:hu_data/大量文件的多效力器自动同步大量文件的多效力器自动同步 运用Linux 2.6内核的inotify监控Linux文件系统事件。 修正可监控的最大目录数量 echo 50000000 /proc/sys/fs/inotify/max_user_watches 金山逍遥网开发的sersync文件自动同步程序,适宜大量文件的自动同步,并可以在文件同步完成后,自动调用CDN缓存刷新接口,刷新发生修正、删除的文件的访问URL。 用于:金山游戏官网的CMS发布系统。Nginx的的Web缓存效力缓存效力Nginx的缓存功能的缓存功能 Nginx

17、从0.7.48版本开场,支持了类似Squid的缓存功能; 缓存把URL及相关组合当作Key,用md5编码哈希后保管; Nginx的Web缓存效力只能为指定URL或形状码设置过期时间,不支持类似Squid的PURGE指令,手动去除指定缓存页面; 采用MMAP实现,设置的缓存区大小不能超越物理内存+SWAP的值。反向代理中的反向代理中的Nginx.conf缓存配置缓存配置#设置Web缓存区称号为cache_one,缓存空间大小为2000MB,1天清理一次缓存,单个文件超越5m不缓存。proxy_cache_path /data0/proxy_cache_path levels=1:2 keys_z

18、one=cache_one:2000m inactive=1d max_size=5m;#注:proxy_temp_path和proxy_cache_path指定的途径必需在同一分区proxy_temp_path /data0/proxy_temp_path;upstream my_server_pool server 192.168.1.2:80 weight=1 max_fails=2 fail_timeout=30s; server 192.168.1.3:80 weight=1 max_fails=2 fail_timeout=30s;反向代理中的反向代理中的Nginx.conf缓存配

19、置缓存配置server listen 80; server_name my.domain ; location / proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass my_server_pool; location .*.gif|jpg|jpeg|png|bmp|swf|js|css$ #对图片、JS、CSS进展缓存,运用Web缓存区cache_one proxy_cache cache_one;反向代理中的反向代理中的Nginx.conf缓存配置缓存配置 #对不同 形状

20、码缓存设置不同的缓存时间 proxy_cache_valid 200 10m; proxy_cache_valid 304 3m; proxy_cache_valid 301 302 1h; proxy_cache_valid any 1m; #设置Web缓存的Key值,Nginx根据Key值md5哈希存储缓存,这里根据“域名、URI、客户端恳求Header头中的If-Modified-Since信息组合成Key。 proxy_cache_key $host$request_uri$ _if_modified_since; #反向代理,访问后端内容源效力器 proxy_set_header H

21、ost $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass my_server_pool; access_log off;Nginx缓存功能的优点缓存功能的优点 对于修正实时性要求不高的图片、Flash、CSS款式文件、JavaScript文件,可以在Nginx反向代理负载平衡效力器上设置缓存,不用每次恳求都转发到后端Web效力器,加快了呼应速度。 减少了Nginx与后端Web效力器的衔接数,提高了Nginx处置性能。Nginx的的Rewrite重写规那么重写规那么Nginx Rewrite规那么相关指令规那么相关指

22、令Nginx Rewrite规那么相关指令有if、rewrite、set、return、break等,其中rewrite是最关键的指令。一个简单的Nginx Rewrite规那么语法如下:rewrite /b/.*.html /play.php?video=$1 break;假设加上if语句,例如如下:if !-f $request_filename rewrite /img/.*$ /site/$host/images/$1 last;Nginx与与Apache的的Rewrite规那么实例对比规那么实例对比简单的Nginx和Apache 重写规那么区别不大,根本上可以完全兼容。例如:Apac

23、he Rewrite 规那么:RewriteRule /mianshi|xianjing/$ /zl/index.php?name=$1 LRewriteRule /ceshi/$ /zl/ceshi.php LRewriteRule /mianshi_a-zA-Z+/$ /zl/index.php?name=$1_$2 LRewriteRule /pingce0-9*/$ /zl/pingce.php?id=$1 LNginx Rewrite 规那么:rewrite /mianshi|xianjing/$ /zl/index.php?name=$1 last;rewrite /ceshi/$

24、 /zl/ceshi.php last;rewrite /mianshi_a-zA-Z+/$ /zl/index.php?name=$1_$2 last;rewrite /pingce0-9*/$ /zl/pingce.php?id=$1 last;由以上例如可以看出,Apache的Rewrite规那么改为Nginx的Rewrite规那么,其实很简单:Apache的RewriteRule指令换成Nginx的rewrite指令,Apache的L标志换成Nginx的last标志,中间的内容不变。Nginx与与Apache的的Rewrite规那么实例对比规那么实例对比假设Apache的Rewrite

25、规那么改为Nginx的Rewrite规那么后,运用nginx -t命令检查发现nginx.conf配置文件有语法错误,那么可以尝试给条件加上引号。例如一下的Nginx Rewrite规那么会报语法错误:rewrite /0-95.html$ /x.jsp?id=$1 last;加上引号就正确了:rewrite /0-95.html$ /x.jsp?id=$1 last;Nginx与与Apache的的Rewrite规那么实例对比规那么实例对比Apache与Nginx的Rewrite规那么在URL跳转时有细微的区别:Apache Rewrite 规那么:RewriteRule /html/tagi

26、ndex/a-zA-Z+/.*$ /$1/ R=301,LNginx Rewrite 规那么:rewrite /html/tagindex/a-zA-Z+/.*$ $host/$1/ permanent;以上例如中,我们留意到,Nginx Rewrite 规那么的置换串中添加了“ $host,这是在Nginx中要求的。Nginx与与Apache的的Rewrite规那么实例对比规那么实例对比另外,Apache与Nginx的Rewrite规那么在变量称号方面也有区别,例如:Apache Rewrite 规那么:RewriteRule /user/login/$ /user/login.php?lo

27、gin=1&forward= % _HOST LNginx Rewrite 规那么:rewrite /user/login/$ /user/login.php?login=1&forward= $host last;Nginx与与Apache的的Rewrite规那么实例对比规那么实例对比Apache与Nginx Rewrite 规那么的一些功能一样或类似的指令、标志对应关系:Apache的RewriteCond指令对应Nginx的if指令;Apache的RewriteRule指令对应Nginx的rewrite指令;Apache的R标志对应Nginx的redirect标志;Apa

28、che的P标志对应Nginx的last标志;Apache的R,L标志对应Nginx的redirect标志;Apache的P,L标志对应Nginx的last标志;Apache的PT,L标志对应Nginx的last标志;Nginx与与Apache的多条件的多条件Rewrite例如例如允许指定的域名访问本站,其他域名一概跳转到允许指定的域名访问本站,其他域名一概跳转到 aaa Apache Rewrite 规那么:规那么:RewriteCond % _HOST .*?.domain $RewriteCond % _HOST !qita.domain $RewriteCond %DOCUMENT_RO

29、OT/market/%1/index.htm -fRewriteRule /wu/$ /market/%1/index.htm LNginx的的if指令不支持嵌套,也不支持指令不支持嵌套,也不支持AND、OR等多条件匹配,相比于等多条件匹配,相比于Apache的的RewriteCond,显得费事一些,但是,我们可以经过下一页,显得费事一些,但是,我们可以经过下一页的的Nginx配置写法来实现这个例如:配置写法来实现这个例如:Nginx与与Apache的多条件的多条件Rewrite例如例如Nginx Rewrite 规那么:规那么:if $host * .*?.domain $set $var_

30、wupin_city $1;set $var_wupin 1;if $host * qita.domain $set $var_wupin 0;if !-f $document_root/market/$var_wupin_city/index.htmset $var_wupin 0;if $var_wupin 1rewrite /wu/$ /market/$var_wupin_city/index.htm last;Nginx与金山逍遥与金山逍遥TCSQL的配合的配合普通数据库的缓存类型普通数据库的缓存类型 普通数据库缓存分为四种:普通数据库缓存分为四种: 1、Key/Value单个对象缓存,如单个对象缓存,如Memcached 2、列表缓存,就像论坛里帖子的列表、列表缓存,就像论坛里帖子的列表 3、记录条数的缓存,比如一个论坛板块里、记录条数的缓存,比如一个论坛板块里有多少个帖子,这样才方便实现分页。有多少个帖子,这样才方便实现分页。 4、复杂一点的、复杂一点的group,sum,count查询,查询,比如一个论坛里按点击数排名的最比如一个论坛里按点击数排名的最HOT的帖的帖子列表。子列表。 第一种比较好实现,后面三种比较费事。第一种比较好实现,后面三种比较费事。什么是什么是TCSQL实时列表缓存数据库?

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论