学习Nginx

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

高性能Web服务器Nginx及相关新技术的应用实践北京金山软件逍遥网张宴2009.10什么是Nginx?•Nginx(“enginex”)是俄罗斯人IgorSysoev(塞索耶夫)编写的一款高性能的HTTP和反向代理服务器。•Nginx已经在俄罗斯最大的门户网站──RamblerMedia()上运行了4年时间,同时俄罗斯超过20%的虚拟主机平台采用Nginx作为反向代理服务器。•在国内,已经有新浪博客、新浪播客、搜狐通行证、网易新闻、网易博客、金山逍遥网、金山爱词霸、校内网、YUPOO相册、豆瓣、迅雷看看等多家网站、频道使用Nginx服务器。Nginx的优点①•1、高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。•2、内存消耗少:在3万并发连接下,开启的10个Nginx进程才消耗150M内存(15M*10=150M)。•3、配置文件非常简单:风格跟程序一样通俗易懂。•4、成本低廉:Nginx为开源软件,可以免费使用。而购买F5BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币。Nginx的优点②•5、支持Rewrite重写规则:能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组。•6、内置的健康检查功能:如果NginxProxy后端的某台Web服务器宕机了,不会影响前端访问。•7、节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头。•8、稳定性高:用于反向代理,宕机的概率微乎其微。单台Nginx支撑了高达2.8万的活动并发连接数2009-09-0314:30,金山游戏《剑侠情缘网络版3》临时维护1小时,大量玩家上官网,论坛、评论、客服等动态应用Nginx服务器集群,每台服务器的Nginx活动连接数达到2.8万,这是本人遇到的Nginx生产环境最高并发值。Nginx的主要应用类别•1、使用Nginx结合FastCGI运行PHP、JSP、Perl等程序•2、使用Nginx作反向代理、负载均衡、规则过滤•3、使用Nginx运行静态HTML页、图片•4、Nginx与其他新技术的结合应用Nginx在金山逍遥网中的应用案例•金山逍遥网(xoyo.com)是金山游戏官方网站,为金山软件旗下的各款游戏提供新闻资讯、客户服务、在线充值、视听互动、在线活动、博客、相册、论坛、玩家社区等内容建设和在线服务支持。金山逍遥网Nginx七层负载均衡的应用Nginx承担每个机房Web负载均衡服务简单的Nginx负载均衡配置①……upstreambbs_server_pool{server192.168.1.15:80weight=1max_fails=2fail_timeout=30s;server192.168.1.16:80weight=1max_fails=2fail_timeout=30s;server192.168.1.17:80weight=1max_fails=2fail_timeout=30s;server192.168.1.18:80weight=1max_fails=2fail_timeout=30s;}……在nginx.conf配置文件中,用upstream指令定义一组反向代理/负载均衡后端服务器池。简单的Nginx负载均衡配置②……server{listen80;server_namebbs.yourdomain.com*.bbs.yourdomain.com;location/{proxy_pass}access_logoff;}……简单的Nginx负载均衡配置③•proxy_pass用于指定反向代理的服务器池。•proxy_set_headerHost$host;当后端Web服务器上也配置有多个虚拟主机时,需要用该Header来区分反向代理哪个主机名。•proxy_set_headerX-Forwarded-For$remote_addr;如果后端Web服务器上的程序需要获取用户IP,请从该Header头获取。Nginx负载均衡的双机热备通常情况下的负载均衡HA高可用优点:实现了双机热备、故障自动转移。缺点:备机服务器处于闲置状态,浪费了硬件资源。逍遥网Nginx负载均衡双机互备正常情况下,两台Nginx负载均衡服务器全部处于活动状态,对外提供服务。服务器①绑定IP别名•/sbin/ifconfigeth0:ha161.1.1.2broadcast61.1.1.255netmask255.255.255.0up•/sbin/routeadd-host61.1.1.2deveth0:ha1•/sbin/arping-Ieth0-c3-s61.1.1.261.1.1.1•在服务器①的外网网卡eth0上,绑定了一个虚拟IP61.1.1.2,绑定完成后发送arping包给网关。服务器②绑定IP别名•/sbin/ifconfigeth0:ha261.1.1.3broadcast61.1.1.255netmask255.255.255.0up•/sbin/routeadd-host61.1.1.3deveth0:ha2•/sbin/arping-Ieth0-c3-s61.1.1.361.1.1.1•在服务器②的外网网卡eth0上,绑定了一个虚拟IP61.1.1.3,绑定完成后发送arping包给网关。新的Nginx双机互备(发生故障时)自动接管公网虚拟IP,实现故障转移服务器①去除IP别名•/sbin/ifconfigeth0:ha161.1.1.2broadcast61.1.1.255netmask255.255.255.0down•通过两台服务器之间的互相检测机制,当服务器①上的检测程序发现自身的Nginx无法访问时,停止绑定虚拟IP61.1.1.2服务器②接管原服务器①的虚拟IP•/sbin/ifconfigeth0:ha161.1.1.2broadcast61.1.1.255netmask255.255.255.0up•/sbin/routeadd-host61.1.1.2deveth0:ha1•/sbin/arping-Ieth0-c3-s61.1.1.261.1.1.1•给网关发送Arping包,保证了网关上IP、MAC地址对应关系能够马上更改,能够做到强行接管虚拟IP。Nginx负载均衡URL分发硬件、软件七层负载均衡对比:NetScaler与Nginx硬件、软件七层负载均衡对比:NetScaler与Nginx根据不同的URL转发到不同服务器server{listen80;server_nameabc.domain.com;location~^/admincp.php{proxy_pass}location/{proxy_pass}}Web相关文件的实时自动同步少量文件的多服务器自动同步•使用Linux2.6内核的inotify监控Linux文件系统事件。•利用开源的lsync监听某一目录,如果目录内文件发生增、删、改,利用Rsync协议自动同步到多台服务器。•lsyncd/data0/htdocs/hu.xoyo.com/data/192.168.5.1::hu_data/192.168.5.2::hu_data/192.168.5.3::hu_data/192.168.5.4::hu_data/大量文件的多服务器自动同步•使用Linux2.6内核的inotify监控Linux文件系统事件。•修改可监控的最大目录数量echo50000000/proc/sys/fs/inotify/max_user_watches•金山逍遥网开发的sersync文件自动同步程序,适合大量文件的自动同步,并可以在文件同步完成后,自动调用CDN缓存刷新接口,刷新发生修改、删除的文件的访问URL。•用于:金山游戏官网的CMS发布系统。Nginx的Web缓存服务Nginx的缓存功能•Nginx从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_pathlevels=1:2keys_zone=cache_one:2000minactive=1dmax_size=5m;#注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区proxy_temp_path/data0/proxy_temp_path;upstreammy_server_pool{server192.168.1.2:80weight=1max_fails=2fail_timeout=30s;server192.168.1.3:80weight=1max_fails=2fail_timeout=30s;}……反向代理中的Nginx.conf缓存配置②server{listen80;server_namemy.domain.com;location/{proxy_set_headerHost$host;proxy_set_headerX-Forwarded-For$remote_addr;proxy_pass}location~.*\.(gif|jpg|jpeg|png|bmp|swf|js|css)${#对图片、JS、CSS进行缓存,使用Web缓存区cache_oneproxy_cachecache_one;反向代理中的Nginx.conf缓存配置③#对不同HTTP状态码缓存设置不同的缓存时间proxy_cache_valid20010m;proxy_cache_valid3043m;proxy_cache_valid3013021h;proxy_cache_validany1m;#设置Web缓存的Key值,Nginx根据Key值md5哈希存储缓存,这里根据“域名、URI、客户端请求Header头中的If-Modified-Since信息”组合成Key。proxy_cache_key$host$request_uri$http_if_modified_since;#反向代理,访问后端内容源服务器proxy_set_headerHost$host;proxy_set_headerX-Forwarded-For$remote_addr;proxy_pass}access_logoff;}Nginx缓存功能的优点•对于修改实时性要求不高的图片、Flash、CSS样式文件、JavaScript文件,可以在Nginx反向代理(负载均衡)服务器上设置缓存,不用每次请求都转发到后端Web服务器,加快了响应速度。•减少

1 / 53
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功