Apache/Nginx
文章平均质量分 80
小麒麟666
这个作者很懒,什么都没留下…
展开
-
NGINX中HTTP请求的11个处理阶段
Nginx的模块化设计使得每一个HTTP模块可以仅专注于完成一个独立的、简单的功能,而一个请求的完整处理过程可以由无数个HTTP模块共同合作完成。这种设计有非常好的简单性、可测试性、可扩展性,然而,当多个http模块流水式地处理同一个请求时,单一的处理顺序是无法满足灵活性需求的,每一个正在处理的HTTP模块很难灵活、有效地指定下一个HTTP处理模块是哪一个。因此,HTTP框架依据常见的处理流程原创 2016-11-03 14:48:25 · 5278 阅读 · 1 评论 -
Nginx中双向链表ngx_queue_t的实现及用法总结
ngx_queue_t双向链表是Nginx提供的轻量级链表容器,它与Nginx的内存池无关,因此,这个链表将不会负责分配内存来存放链表元素。这意味着,任何链表元素都需要通过其他方式来分配它所需要的内存空间,ngx_queue_t并不存储元素,只是把这些已经分配好内存的元素用双向链表连接起来。链表作为顺序容器的优势在于,它可以高效地执行插入、删除、合并等操作,在移动链表中的元素时只需要修改指针的原创 2016-12-09 15:39:28 · 840 阅读 · 0 评论 -
使用c++/c++11开发nginx模块时的两种编译方法
使用c++开发nginx模块时的两种编译方法Nginx本身只支持使用C语言开发模块,如果我们需要使用C++,那么必须修改源码里的编译脚本首先,我们不能使用g++编译Nginx自身的C代码,因为C++的语法比C严格很多,而Nginx代码用到了很多C语言的“边角”特性,直接使用g++编译会报大量错误正确的做法是使用gcc来编译nginx源码,而使用g++来编译我们自己的C++代码,两者可使原创 2016-11-18 19:08:00 · 5441 阅读 · 1 评论 -
Nginx的控制命令小结
1、默认方式启动nginx/usr/local/nginx/sbin/nginx会读取默认路径下的配置文件:/usr/local/nginx/conf/nginx.conf2、另行指定配置文件的启动方式使用-c参数指定配置文件/usr/local/nginx/sbin/nginx -c /tmp/nginx.conf此时,会读取-c参数后指定的nginx.c原创 2016-11-25 14:22:38 · 465 阅读 · 0 评论 -
NGINX的HTTP框架的初始化流程
Nginx http框架初始化过程就在ngx_http_module模块中,当配置文件中出现了http{}配置块时就回调ngx_http_block方法,此方法包括HTTP框架的完整初始化流程,如图: 介绍图中的15个步骤1) 按照在ngx_modules数组中的顺序,由0开始依次递增地设置所有HTTP模块的ctx_index字段。这个字段的值将决定HTT原创 2016-11-11 18:53:42 · 951 阅读 · 0 评论 -
nginx中基础数据结构的详细说明
1、整形Nginx使用ngx_int_t封装有符号整型,使用ngx_uint_t封装无符号整型ngx_int_t、ngx_uint_t的定义如下:typedef intptr_t ngx_int_t; typedef uintptr_t ngx_uint_t;2、ngx_str_tngx_str_t结构就是字符串。ngx_str_t的定义如下:typed原创 2016-12-02 16:03:49 · 1554 阅读 · 0 评论 -
详解nginx的基本配置及nginx.conf文件配置示例
Nginx在运行时,至少必须加载几个核心模块和一个事件类模块。这些模块运行时所支持的配置项称为基本配置—所有其他模块执行时都依赖的配置项。下面详述基本配置项的用法。由于配置项较多,所以把它们按照用户使用时的预期功能分成了以下4类:1、用于调试进程和定位问题的配置项(1)是否以守护进程方式运行Nginx语法:daemon on | off;默认:daemon on; 守护原创 2016-11-16 17:50:28 · 28703 阅读 · 1 评论 -
nginx采用遍历ngx_list_t获取源码列表中没有的http头部变量的方法
nginx源码中,已解析好的字段存在如下结构体中typedef struct { ngx_list_t headers; ngx_table_elt_t *host; ngx_table_elt_t *connection; ngx_table_e原创 2016-11-01 15:42:58 · 1577 阅读 · 0 评论 -
nginx中宏NGX_HTTP_HEADERS中的accept、accept_language获取和使用方法
编写nginx服务器程序时,想要获取ngx_http_request_t->ngx_http_headers_in_t中的accept和accept_language,代码中引用这两个字段时,编译出错,提示变量未定义,这两个变量在ngx_http_headers_in_t结构体中使用宏NGX_HTTP_HEADERS包含,在nginx源码中搜索此宏发现代码量极少,且真个源码中没有地方开启此宏,所以原创 2016-10-31 18:03:15 · 2986 阅读 · 0 评论 -
Nginx的http开发中用两种介入方式打印“hello world”
在对nginx进行http开发时,有两种方式介入http模块,具体可以参考nginx模块定制开发中介入http模块的方法及NGX_HTTP_CONTENT_PHASE阶段的详细介绍,下面用代码来具体实现这两种方法打印“hello world”。方法一、在ngx_http_module_t接口的postconfiguration方法中将自定义的方法添加到handler动态数组中源原创 2016-11-07 19:04:27 · 2044 阅读 · 1 评论 -
nginx模块定制开发中介入http模块的方法及NGX_HTTP_CONTENT_PHASE阶段的详细介绍
nginx模块定制开发中,大多数都是针对http的模块的定制开发,比如添加一个打印“hello world”的功能、记录http请求内容、对http请求作出一个特殊响应等,此时,需要在nginx源码中的http模块中介入我们的定制代码,我们可以通过必定会被调用的postconfiguration方法,向全局的ngx_http_core_main_conf_t结构的phases[NGX_HTTP_L原创 2016-11-04 15:47:51 · 1861 阅读 · 0 评论 -
利用apache-ab检测nginx在高并发情形下的响应性能
一、测试前系统部署1、 在测试机上安装部署nginx和redis;2、 修改系统配置文件/etc/sysctl.conf,如附件;3、 修改nginx配置文件/usr/local/nginx/conf/nginx.conf如附件;4、 分别启动redis-sercer和nginx。 二、测试方法在另一台测试机上使用apache ab对部署nginx的机器进行原创 2017-06-26 20:03:59 · 2591 阅读 · 1 评论