版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、高性能,Web,服务器,Nginx,及相关新技术的应用实践,北京金山软件,逍遥网,张宴,2009.10,2,3/27/2020,什么是,Nginx,?,?,Nginx (“engine x”) 是俄罗斯人,Igor,Sysoev(,塞索耶夫,),编写的一款高性能的,HTTP,和,反向代理服务器。,?,Nginx,已经在俄罗斯最大的门户网站,Rambler Media,(,www.rambler.ru,)上运行了,4,年,时间,同时俄罗斯超过,20%,的虚拟主机平台采用,Nginx,作为反向代理服务器。,?,在国内,已经有新浪博客、新浪播客、搜狐通行,证、网易新闻、网易博客、金山逍遥网、金山爱,
2、词霸、校内网、,YUPOO,相册、豆瓣、迅雷看看等多,家网站、频道使用,Nginx,服务器。,Nginx,的优点,?,1,、高并发连接:,官方测试能够支撑,5,万并发连,接,在实际生产环境中跑到,2,3,万并发连接数。,?,2,、内存消耗少:,在,3,万并发连接下,开启的,10,个,Nginx,进程才消耗,150M,内存,(,15M*10=150M,)。,?,3,、配置文件非常简单:,风格跟程序一样通俗,易懂。,?,4,、成本低廉:,Nginx,为开源软件,可以免费使,用。而购买,F5 BIG-IP,、,NetScaler,等硬件负载,均衡交换机则需要十多万至几十万人民币。,Nginx,的优点
3、,?,5,、支持,Rewrite,重写规则:,能够根据域名、,URL,的不同,将,HTTP,请求分到不同的后端,服务器群组。,?,6,、内置的健康检查功能:,如果,Nginx,Proxy,后端的某台,Web,服务器宕机了,不,会影响前端访问。,?,7,、节省带宽:,支持,GZIP,压缩,可以添加,浏览器本地缓存的,Header,头。,?,8,、稳定性高:,用于反向代理,宕机的概率,微乎其微。,单台,Nginx,支撑了高达,2.8,万的活动并发连接数,2009-09-03,14:30,,金山游戏剑侠情缘网络版,3,临时维,护,1,小时,大量玩家上官网,论坛、评论、客服等动态应用,Nginx,服务
4、器集群,每台服务器的,Nginx,活动连接数达到,2.8,万,这是本人遇到的,Nginx,生产环境最高并发值。,Nginx,的主要应用类别,?,1,、使用,Nginx,结合,FastCGI,运行,PHP,、,JSP,、,Perl,等程序,?,2,、使用,Nginx,作反向代理、负载均衡、,规则过滤,?,3,、使用,Nginx,运行静态,HTML,页、图片,?,4,、,Nginx,与其他新技术的结合应用,Nginx,在金山逍遥网中的应用案例,?,金山逍遥网,(),是金山游戏官方网站,,为金山软件旗下的各,款游戏提供新闻资讯、,客户服务、在线充值、,视听互动、在线活动、,博客、相册、论坛、,玩家社
5、区等内容建设,和在线服务支持。,金山逍遥网,Nginx,七层负载均衡的应用,9,3/27/2020,Nginx,承担每个机房,Web,负载均衡服务,简单的,Nginx,负载均衡配置,upstream bbs_server_pool ,server 5:80 weight=1 max_fails=2 fail_timeout=30s;,server 6:80 weight=1 max_fails=2 fail_timeout=30s;,server 7:80 weight=1 max_fails=2 fail_timeout=30
6、s;,server 8:80 weight=1 max_fails=2 fail_timeout=30s;,在,nginx.conf,配置文件中,用,upstream,指令定,义一组反向代理,/,负载均衡后端服务器池。,简单的,Nginx,负载均衡配置,server,listen,80;,server_name *;,location /,proxy_pass http:/bbs_server_pool;,proxy_set_header Host $host;,proxy_set_header X-Forwarded-For $remote_addr;,access_l
7、og off;,简单的,Nginx,负载均衡配置,?,proxy_pass http:/bbs_server_pool;,用于指定,反向代理的服务器池。,?,proxy_set_header Host $host;,当后端,Web,服,务器上也配置有多个虚拟主机时,需要用,该,Header,来区分反向代理哪个主机名。,?,proxy_set_header X-Forwarded-For,$remote_addr;,如果后端,Web,服务器上的程,序需要获取用户,IP,,请从该,Header,头获取。,Nginx,负载均衡的双机热备,14,3/27/2020,通常情况下的负载均衡,HA,高可用,
8、优点:实现了双机热备、故障自动转移。,缺点:备机服务器处于闲置状态,浪费了硬件资源。,逍遥网,Nginx,负载均衡双机互备,正常情况下,,两台,Nginx,负,载均衡服务器,全部处于活动,状态,对外提,供服务。,服务器绑定,IP,别名,?,/sbin/ifconfig eth0:ha1 broadcast,55 netmask up,?,/sbin/route add -host dev eth0:ha1,?,/sbin/arping -I eth0 -c 3 -s ,?,在服务器
9、的外网网卡,eth0,上,绑定了一个,虚拟,IP ,,绑定完成后发送,arping,包给,网关。,服务器绑定,IP,别名,?,/sbin/ifconfig eth0:ha2 broadcast,55 netmask up,?,/sbin/route add -host dev eth0:ha2,?,/sbin/arping -I eth0 -c 3 -s ,?,在服务器的外网网卡,eth0,上,绑定了一个,虚拟,IP ,,绑定完成后发送,arping
10、,包给,网关。,新的,Nginx,双机互备,(,发生故障时,),自动接管公网,虚拟,IP,,实现,故障转移,服务器去除,IP,别名,?,/sbin/ifconfig eth0:ha1 broadcast,55 netmask down,?,通过两台服务器之间的互相检测机制,当,服务器上的检测程序发现自身的,Nginx,无,法访问时,停止绑定虚拟,IP ,服务器接管原服务器的虚拟,IP,?,/sbin/ifconfig eth0:ha1 broadcast,55 netmask 255
11、.255.255.0 up,?,/sbin/route add -host dev eth0:ha1,?,/sbin/arping -I eth0 -c 3 -s ,?,给网关发送,Arping,包,保证了网关上,IP,、,MAC,地址对应关系能够马上更改,能够做,到强行接管虚拟,IP,。,Nginx,负载均衡,URL,分发,23,3/27/2020,硬件、软件,七层负载均,衡对比:,NetScaler,与,Nginx,硬件、软件,七层负载均,衡对比:,NetScaler,与,Nginx,根据不同的,URL,转发到不同服务器,server,l
12、isten 80;,server_name ;,location /admincp.php,proxy_pass 1;,proxy_set_header Host $host;,proxy_set_header X-Forwarded-For $remote_addr;,location /,proxy_pass http:/php_server_pool;,proxy_set_header Host $host;,proxy_set_header X-Forwarded-For $remote_addr;,Web,相关文件的实时自动同步,27,3/27/20
13、20,少量文件的多服务器自动同步,?,使用,Linux 2.6,内核的,inotify,监控,Linux,文件系,统事件。,?,利用开源的,lsync,监听某一目录,如果目录,内文件发生增、删、改,利用,Rsync,协议自,动同步到多台服务器。,?,lsyncd /data0/htdocs/,:hu_data/ :hu_data/,:hu_data/ :hu_data/,大量文件的多服务器自动同步,?,使用,Linux 2.6,内核的,inotify,监控,Linux,文件系,统事件。,?,修改可监控的最大
14、目录数量,echo 50000000 /proc/sys/fs/inotify/max_user_watches,?,金山逍遥网开发的,sersync,文件自动同步程,序,适合大量文件的自动同步,并可以在,文件同步完成后,自动调用,CDN,缓存刷新接,口,刷新发生修改、删除的文件的访问,URL,。,?,用于:金山游戏官网的,CMS,发布系统。,Nginx,的,Web,缓存服务,30,3/27/2020,Nginx,的缓存功能,?,Nginx,从,0.7.48,版本开始,支持了类似,Squid,的缓存功能;,?,缓存把,URL,及相关组合当作,Key,,用,md5,编码,哈希后保存;,?,Ngi
15、nx,的,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_zone=cache_one:2000m inactive=1d max_si
16、ze=5m;,#,注:,proxy_temp_path,和,proxy_cache_path,指定的路径必须在同一分区,proxy_temp_path /data0/proxy_temp_path;,upstream my_server_pool ,server :80 weight=1 max_fails=2 fail_timeout=30s;,server :80 weight=1 max_fails=2 fail_timeout=30s;,反向代理中的,Nginx.conf,缓存配置,server,listen 80;,server_name
17、;,location /,proxy_set_header Host $host;,proxy_set_header X-Forwarded-For $remote_addr;,proxy_pass http:/my_server_pool;,location .*.(gif|jpg|jpeg|png|bmp|swf|js|css)$,#,对图片、,JS,、,CSS,进行缓存,使用,Web,缓存区,cache_one,proxy_cache cache_one;,反向代理中的,Nginx.conf,缓存配置,#,对不同,HTTP,状态码缓存设置不同的缓存时间,proxy_cache_valid
18、 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$http_if_modified_since;,#,反向代理,访问后端内容源服务器,proxy_set_header Host $
19、host;,proxy_set_header X-Forwarded-For $remote_addr;,proxy_pass http:/my_server_pool;,access_log off;,Nginx,缓存功能的优点,?,对于修改实时性要求不高的图片、,Flash,、,CSS,样式文件、,JavaScript,文件,可以在,Nginx,反向代理,(,负载均衡,),服务器上设置缓存,不,用每次请求都转发到后端,Web,服务器,加快,了响应速度。,?,减少了,Nginx,与后端,Web,服务器的连接数,,提高了,Nginx,处理性能。,Nginx,的,Rewrite,重写规则,36,
20、3/27/2020,Nginx,Rewrite,规则相关指令,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,的,Rewrit
21、e,规则实例对比,简单的,Nginx,和,Apache,重写规则区别不大,基本上能够完全兼容。例如:,Apache Rewrite,规则:,RewriteRule /(mianshi|xianjing)/$ /zl/index.php?name=$1 L,RewriteRule /ceshi/$ /zl/ceshi.php L,RewriteRule /(mianshi)_(a-zA-Z+)/$ /zl/index.php?name=$1_$2 L,RewriteRule /pingce(0-9*)/$ /zl/pingce.php?id=$1 L,Nginx Rewrite,规则:,rewr
22、ite /(mianshi|xianjing)/$ /zl/index.php?name=$1 last;,rewrite /ceshi/$ /zl/ceshi.php last;,rewrite /(mianshi)_(a-zA-Z+)/$ /zl/index.php?name=$1_$2 last;,rewrite /pingce(0-9*)/$ /zl/pingce.php?id=$1 last;,由以上示例可以看出,,Apache,的,Rewrite,规则改为,Nginx,的,Rewrite,规则,其实,很简单:,Apache,的,RewriteRule,指令换成,Nginx,的,re
23、write,指令,,Apache,的,L,标,记换成,Nginx,的,last,标记,中间的内容不变。,Nginx,与,Apache,的,Rewrite,规则实例对比,如果,Apache,的,Rewrite,规则改为,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
24、 last;,Nginx,与,Apache,的,Rewrite,规则实例对比,Apache,与,Nginx,的,Rewrite,规则在,URL,跳转时有细微的区别:,Apache Rewrite,规则:,RewriteRule /html/tagindex/(a-zA-Z+)/.*$ /$1/ R=301,L,Nginx Rewrite,规则:,rewrite /html/tagindex/(a-zA-Z+)/.*$ http:/$host/$1/,permanent;,以上示例中,我们注意到,,Nginx Rewrite,规则的置换串中,增加了“,http:/$host”,,这是在,Ngin
25、x,中要求的。,Nginx,与,Apache,的,Rewrite,规则实例对比,另外,,Apache,与,Nginx,的,Rewrite,规则在变量名称方面也有区别,,例如:,Apache Rewrite,规则:,RewriteRule /user/login/$,/user/login.php?login=1,set $var_wupin 1;,if ($host * $),set $var_wupin 0;,if (!-f $document_root/market/$var_wupin_city/index.htm),set $var_wupin 0;,if ($var_wupin 1)
26、,rewrite /wu/$ /market/$var_wupin_city/index.htm last;,Nginx,与金山逍遥,TCSQL,的配合,45,3/27/2020,一般数据库的缓存类型,?,一般数据库缓存分为四种:,?,1,、,Key/Value,单个对象缓存,,,如,Memcached,?,2,、,列表缓存,,,就像论坛里帖子的列表,?,3,、,记录条数的缓存,,,比如一个论坛板块里,有多少个帖子,这样才方便实现分页。,?,4,、,复杂一点的,group,,,sum,,,count,查询,,,比如一个论坛里按点击数排名的最,HOT,的帖,子列表。,?,第一种比较好实现,后面三
27、种比较麻烦。,什么是,TCSQL,实时列表缓存数据库?,?,TCSQL,是金山逍遥网技术支持部平台组以,Tokyo,Cabinet DBM,为底层存储与索引,结合类似,Memcached,的,Key-Value,内存对象缓存,借鉴,SQL,语句,的,SELECT,、,INSERT,、,UPDATE,、,DELETE,思想与功能开发,的实时列表缓存数据库,可实现对,列表页数据,、,记录,条数,的实时缓存。,?,TCSQL,采用,HTTP GET/POST,协议,JSON,数据交换格式在,客户端、服务器端之间进行数据交互。,?,利用我们编写的,MySQL UDF,扩展,+,触发器,我们可以在,MySQL,的某张表发生插入、更新、删除操作时,自动,将数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 八年级道德与法治上册《1.1认识社会生活》教学设计
- 小学四年级劳动学科“泡茶劳动实践”教学设计
- 八年级物理《光的折射》教案设计:基于核心素养的探究式教学建构
- 高三生物一轮复习教学设计:细胞组成结构与功能核心考点突破
- 高中生物学必修1 第4章 第1节 被动运输 第一课时 教学设计
- 高中英语选择性必修第二册Unit 2 Bridging Cultures语法词汇课教学设计
- 高三化学“侯氏制碱法及碳酸钠质量分数的测定”教学设计
- 小学四年级德育教学设计:安全教育日校园安全主题班会
- 九年级数学《直角三角形与勾股定理》教学设计
- 小学五年级综合实践活动发明有方法教学设计
- 陕西榆林榆阳区2026年基层社会治理网格员招聘考试试卷-含答案解析
- 2026年广东省中考化学试卷(含答案)
- 2025地球小博士知识竞赛试题附答案
- 食道裂孔疝常见症状及护理方法
- 生成式人工智能在初中数学课堂差异化教学中的应用与实践教学研究课题报告
- 考试舆情应急预案(3篇)
- 华师一附中【圆锥曲线】专题训练汇编
- 酒店对醉酒客人的正确处理方法
- 30题解决方案工程师岗位常见面试问题含HR问题考察点及参考回答
- 点检样品管理办法
- 2025年智能安全帽项目立项申请报告模板
评论
0/150
提交评论