- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
nginx详细文档
nginx详细文档
( 安装配置,深入源码,模块编写,编译器参数,系统函数 )
吴东April 28, 2009
Contents
Contents 1
Chapter 1 前言 2
Chapter 2 基本配置 3
2.1安装 3
2.2.配置说明 5
2.3启动和控制 17
Chapter 3深入源码 18
3.1源码结构 18
3.2configure配置 18
3.3nginx源码习惯 18
3.4.常用基础库 18
3.5.core模块 28
3.6event模块 32
3.7http模块 34
Chapter 4模块编写 38
4.1http模块编写 39
4.2基于nginx的高性能服务器开发 39
4.2.基于nginx的高性能服务器开发 Chapter4.模块编写 39
Chapter 5附录 39
5.1编译器参数 39
5.2系统函数 41
Chapter 1 前言
在互联网编程中,http服务器编程作为一个非常重要方向一直为各种语言所重视,从c语言的apache,Lighttpd到当前非常流行的nginx。Java有tom-cat,jetty,websphere等众多服务器,pyhoen的zope等服务器。既有重量级的服务器,又有轻量级的,嵌入式的服务器。从互联网的应用来说,c语言的http服务器一直占有主导地位,当前最流行的三个开源服务器有apache,Lighttpd和nginx。Apache作为经典的Web服务器,除了慢没有别的缺点了,Apache2对fcgi支持并不好,非常好用的proxy和proxy_ajp(很多人用它作为tomcat的前端),不支持epoll(这年头,epoll几乎是性能的必备)。Lighttpd作为杀手级的静态文件能力,杀手级的fcgi能力但是proxy模块不够稳定。Nginx速度快,占用资源少,杀手级的proxy和rewrite,非常不错的静态文件能力,最适合作为整个网站的前端服务(将php、svn等不同请求发送往后端apache)。现在国内Nginx的用户越来越多了,多数拥抱Nginx的网站都钟意其优异的性能表现,如果是相对比较大的网站,节约下来的服务器成本无疑是客观的。当前 Ngnix美中不足之处是相关的文档和用户经验都还是很欠缺,用户之间还很难做到可借鉴性的交流。最近因为朋友遇到一些技术问题,我也翻阅了不少Nginx的邮件列表内容,发现大量的技术细节仍然在频繁变化中,可是中文社区内相关的记录和讨论太少了。相信国内这些Nginx用户积攒的经验肯定是不少的,但可能是因为某些其它因素考虑而看不到相关的技术分享。本书的写作就是为了向大家展示nginx的内部结构,以便于大家更好的使用该服务器。对于一个八万行代码的http服务器,从性能来看它是那么的出色,从功能来看它并不逊色于几十万行的apache服务器。Nginx是实现有几个非常出色的地方:模块化设计,流水线请求处理,多进程控制,epoll的使用,平滑的升级程序或是配置文件。Nginx采用的是单线程的方式,网络服务器的几种模型可以参考C10K的介绍。当然,如果在linux下,最好的模型自然是EPool(effectiveepoll?)。目前一台服务器支持10K个客户访问,基本上还比较麻烦,64位的CPU,可能是一个比较好的解决方案。2块1000M网卡,10K客户端,每个客户端的带宽是2000/10000=200K,这是理论值,勉强可行。考虑一下纯粹的线程模型。10K个客户端,需要10K个线程。考虑到每个进程3G的用户空间,那么每个线程的空间是3000M/10K=300K,只能说非常勉强可以运行(每个线程的cruntime大约需要2-3K空间)。但是大量的线程调度会极大的减缓系统效率。再考虑一下多个进程的模型,每个进程创建多个线程。其实与纯粹的线程模型差异不大,不过是每个线程的用户空间不受太大限制。大量的线程调度带来的巨大性能损耗会使得整个系统效率及其低下。当然,这种模型也不是一无是处,对于客户端数目不多的情况,比如ftp服务器,这种模型是非常合适的。然后就剩下epoll模型。要使用epoll模型,首先必须有Linux2.6的内核。了解select模型的人都知道,select每个句柄只能支持64个socket,这可以通过阅读linuxselect.h知道。而Poll模型则是一种事件触发的模型,没有64个socket的限制。epoll是对Poll模型的一个改造,让一个Poll句柄可以同时支持多个Socket句柄,好处是将大量Poll句柄的事件探测机制放到内核中处理,大大减少了将数据从内核态拷贝到用户态的次数,从而提高效率。阅读Linux的源码可以看到,epoll的内部使用的是一个Hashmap,Hashmap中存放Poll对象
您可能关注的文档
- RLC协议学习总结.doc
- 识币器Poll模式和人工模式使用方法.doc
- 八月练习宫4.doc
- 字符设备驱动相关函数及数据结构简介.doc
- 杏花花粉活力测定和储存.doc
- 2015嵌入式系统设计考试考题-3.doc
- VISTA-120简易编程手册3.doc
- (通信 电子)ZigBee学习资料.docx
- linux设备驱动读书笔记2.doc
- 世界范围内收入,健康和福利:来自盖洛普民调的证据.docx
- 2024_2025学年九年级化学上册第五单元化学方程式基础过关卷含解析新版新人教版.docx
- 2024_2025年新教材高中地理第三章地球上的大气单元素养检测含解析湘教版必修第一册.docx
- 高中语文第5课苏轼词两首__念奴娇赤壁怀古教案4新人教版必修4.doc
- 2024_2025年新教材高中物理第4章力与平衡章末检测含解析鲁科版必修第一册.doc
- 高中语文第一单元第3课大堰河__我的保姆学案1新人教版必修1.doc
- 2024_2025学年高中语文第二单元新闻6喜看稻菽千重浪检测含解析粤教版必修5.doc
- 2024_2025学年新教材高中历史第九单元中华人民共和国成立和社会主义革命与建设第27课社会主义建设在探索中曲折发展梯度作业含解析新人教版必修中外历史纲要上.doc
- 2024_2025学年新教材高中英语Unit2Let’scelebrate第4课时Writing_介绍节日学案含解析外研版必修第二册.doc
- 2024_2025学年新教材高中生物第6章细胞的生命历程2细胞的分化课后作业含解析新人教版必修1.doc
- 2024_2025年新教材高中生物课时检测4细胞中的无机物含解析新人教版必修1.doc
文档评论(0)