- 博客(8)
- 资源 (4)
- 收藏
- 关注
原创 NGINX系列之HTTP模块开发
上文介绍nginx请求11个阶段处理,本文将动手实操开发并注册一个HTTP模块,在实现ngx_http_hello_world_module模块的过程中,详细介绍其实现步骤。模块组成介绍模块定义模块名称 ngx_http_hello_world_module模块功能 功能相对简单,从Hello World开始,通过实现扩展HTTP模块ngx_http_hello_wor...
2018-07-28 13:38:32 1205
原创 NGINX系列之HTTP阶段分析
读取完请求头后,nginx进入请求的处理阶段。简单的情况下,客户端发送过的统一资源定位符(url)对应服务器上某一路径上的资源,web服务器需要做的仅仅是将url映射到本地文件系统的路径,然后读取相应文件并返回给客户端。但这仅仅是最初的互联网的需求,而如今互联网出现了各种各样复杂的需求,要求web服务器能够处理诸如安全及权限控制,多媒体内容和动态网页等等问题。这些复杂的需求导致web服务器不再是一...
2018-07-28 13:37:31 683
原创 NGINX系列之配置文件
nginx是一款高性能的服务器,其核心配置可配置,存储在nginx.conf文件中,本文简要介绍各参数的含义。######Nginx配置文件nginx.conf######nginx运行的用户名和用户组user root root;#nginx工作进程数,建议设置为等于CPU总核心数。worker_processes 8;#全局错误日志定义类型,[ debug | info...
2018-07-28 13:36:34 239
原创 NGINX系列之进程模型
在上一节中分析了nginx主流程,在mian函数中完成服务器的配置文件解析以及模块初始化工作后,根据系统设置进入单进程或者多进程模式,本文将分析nginx进程模型。进程模型简介在web服务中,随着用户基数增长,技术演进的趋势是提高系统的并发性和稳定性,一种方式是通过扩展机器的个数实现负载均衡,通过多台机器的量变引起质变,提高系统的并发性,显然这种方式资源利用率较低,成本较高;第二种方式...
2018-07-28 13:35:36 2960
原创 NGINX系列之事件模型
nginx在完成进程的创建后,主进程进入信号处理的循环中,不参与事件处理;worker进程则进入事件处理过程。nginx任何操作,包括定时任务、连接、读写等都可以定义为事件,事件具有的特点是被动特性,即发生才处理,避免因为轮训状态而导致的时间消耗。本章将介绍nginx的事件处理模型。事件模型简介定时器任务上一章节中提到nginx如何实现定时任务?如何确保定时任务的准确性? ...
2018-07-28 13:33:35 1593
原创 NGINX系列之MAIN函数
近期在系统学习Nginx相关源码,针对nginx进程模型、事件处理模型、配置以及扩展开发等诸多方面希望能够沉淀一些东西,故针对上述方面整理一系列博客,既然是源码分析,那就首先从main函数开始吧。核心数据结构全局变量cycle数据结构 ngx_cycle_s变量是nginx中贯穿始终的全局变量,其存储在系统运行过程中的所有信息,包括配置文件信息、模块信息、客户端连接、读写事件处理函...
2018-07-28 13:32:20 777
原创 NGINX系列之ngx_connection
上文介绍nginx事件模型,当用户发起请求时候,为便于对连接进行管理,服务端将用户的请求封装为一种数据结构ngx_connection_t,从而方便维护客户端各种请求信息以及连接生命周期的管理。数据结构struct ngx_connection_s { void *data; ngx_event_t *read; n...
2018-07-28 13:30:33 1070
原创 NGINX系列之内存池
Nginx内存池 ngx_pool_tNginx作为高性能到web服务器,自然需要满足高效的内存使用率和分配效率。 内存池满足上述两个要求,主要优点:统一内存管理,避免内存碎片化,提高系统到使用率(Nginx做内存对齐处理,牺牲一定到使用率换来寻址速率)避免多次向系统申请内存(涉及内核态和用户态转换),提高内存到分配效率;内存统一分配和销毁,避免内存泄露。数据结构 n...
2018-07-28 13:29:18 257
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人