深入剖析Nginx - (EPUB全文下载)
文件大小:0.35 mb。
文件格式:epub 格式。
书籍内容:
深入剖析Nginx
第1章 源码分析的准备工作
第2章 跟踪与调试
第3章 进程模型
第4章 数据结构
第5章 配置解析
第6章 模块综述
第7章 事件管理机制
第8章 变量机制
第9章 请求处理与响应
第10章 请求定位
第11章 动态页面请求处理
第12章 过滤模块
第13章 负载均衡
第14章 访问控制
附录A
附录B
附录C
版权
第1章 源码分析的准备工作
从Nginx(读作engine x)的官方网站[1],我们可以看到如下介绍:Nginx是Igor Sysoev[2]编写的一款HTTP和反向代理服务器,另外它也可以当作邮件代理服务器。它一直被众多流量巨大的俄罗斯网站所使用,例如Yandex[3]、Mail.Ru[4]、VKontakte[5]以及Rambler[6]等。据Netcraft统计,截止到2012年8月份,世界上最繁忙的网站中有11.48%[7]在使用Nginx作为其服务器或者代理服务器。部分典型成功案例有:Netflix[8]、Wordpress.com[9]和FastMail.FM[10]。鉴于Nginx的强大性能与稳定性,在国内也有大量的高压力网站在使用Nginx,如新浪、网易、腾讯、CSDN、酷六、水木社区、豆瓣等。
1.1 主要特性
作为轻量级HTTP服务的典型代表,Nginx除了具备体积小、配置灵活、并发能力强、稳定等众所周知的特点以外,在官方网站还详细列出了Nginx的一些主要特性,我们来详细了解一下[11]。
1.HTTP服务基本特性
• 处理静态页面请求;
• 处理index 首页请求;
• 对请求目录进行列表显示;
• 支持多进程间的负载均衡;
• 对打开文件描述符进行缓存(提高性能);
• 对反向代理进行缓存(加速);
• 支持FastCGI、uwsgi、SCGI 和memcached 多种后端服务器;
• 支持gzip、ranges、chunked、XSLT、SSI 以及图像缩放;
• 支持SSL、TLS SNI。
2.HTTP服务高级特性
• 基于名称的虚拟主机;
• 基于IP 的虚拟主机;
• 支持Keep-alive 和pipelined 连接;
• 灵活和方便的配置;
• 在更新配置和升级执行程序时提供不间断服务;
• 可自定义客户端访问的日志格式;
• 带缓存的日志写操作(提高性能);
• 支持快速的日志文件切换;
• 支持对3xx-5xx 错误代码进行重定向;
• URI 重写支持正则表达式;
• 根据客户端地址执行不同的功能;
• 支持基于客户端IP 地址的访问控制;
• 支持基于HTTP 基本认证机制的访问控制;
• 支持HTTPreferer 验证;
• 支持HTTP 协议的PUT、DELETE、MKCOL、COPY 以及MOVE 方法;
• 支持FLV流和MP4 流;
• 支持限速机制;
• 支持单客户端的并发控制;
• 支持Perl脚本嵌入。
3.邮件代理服务特性
• 使用外部HTTP 认证服务器将用户重定向到IMAP/POP3 服务器;
• 使用外部HTTP 认证服务器将用户重定向到内部SMTP 服务器;
• 支持的认证方式。
♦ POP3:USER/PASS、APOP、AUTH LOGIN/PLAIN/CRAM-MD5。
♦ IMAP:sLOGIN、AUTH LOGIN/PLAIN/CRAM-MD5。
♦ SMTP:AUTH LOGIN/PLAIN/CRAM-MD5。
• 支持SSL;
• 支持STARTTLS 和STLS。
4.架构和扩展性
• 一个主进程和多个工作进程配合服务的工作模型;
• 工作进程以非特权用户运行(安全性考虑);
• 支持的事件机制有:kqueue(FreeBSD 4.1+)、epoll(Linux 2.6+)、rt signals(Linux2.2.19+)、/dev/poll(Solaris 711/99+)、eventports(Solaris10)、select 和poll;
• 支持 kqueue 的众多特性,包括 EV_CLEAR、EV_DISABLE(临时禁止事件)、NOTE_LOWAT、EV_EOF等;
• 支持sendfile(FreeBSD3.1+、Linux2.2+、Mac OSX10.5+)、sendfile64(Linux2.4.21+)和sendfilev(Solaris8 7/01+);
• 支持异步文件IO(FreeBSD 4.3+、Linux2.6.22+);
• 支持DIRECTIO(FreeBSD 4.4+、Linux2.4+、Solaris2.6+、Mac OS X);
• 支持Accept-filters(FreeBSD4.1+、NetBSD5.0+)和TCP_DEFER_ACCEPT(Linux2.4+);
• 10000 个非活跃HTTPkeep-alive 连接仅占用约2.5MB 内存;
• 最少程度的数据拷贝操作。
5.已测试过的操作系统和平台
• FreeBSD 3~10/i386、FreeBSD5~10/amd64;
• Linux 2.2~3/i386、Linux2.6~3/amd64;
• Solaris9/i386、sun4u、Solaris10/i386、amd64、sun4v;
• AIX7.1/powerpc;
• HP-UX11.31/ia64;
• Mac OS X/ppc、i386;
• WindowsXP、Windows Server 2003。
从上面列表可以看到Nginx功能的丰富与强悍。当然,这里给出的还只是Nginx功能的简单描述,而对于每项功能的具体使用以及是如何实现的,我们还不得而知,而这也正是本书将要展开叙述的全部内容。
1.2 源码下载
Nginx的源码可通过官网提供的下载地址[12]找到,截止当前的最新版本是Nginx1.2.0,也就是本书所针对的版本。虽然官网下载页没有提供Nginx旧版源码的下载链接,但Nginx的所 ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » 深入剖析Nginx - (EPUB全文下载)