
nginx
文章平均质量分 55
xiongping_
这个作者很懒,什么都没留下…
展开
-
ngx_align_ptr宏
Cache line alignment (cache对齐) 数据跨越两个cache line,就意味着两次load或者两次store。如果数据结构是cache line对齐的, 就有可能减少一次读写。数据结构的首地址cache line对齐,意味着可能有内存浪费(特别是 数组这样连续分配的数据结构),所以需要在空间和时间两方面权衡。写出C语言的地址对齐宏ALIGN(Ptr,转载 2015-02-26 14:36:41 · 930 阅读 · 0 评论 -
Nginx Rewrite可以用到的全局变量
Nginx Rewrite可以用到的全局变量$args ,$content_length ,$content_type ,$document_root ,$document_uri ,$host ,$http_user_agent ,$http_cookie ,$limit_rate ,$request_body_file ,$request_method ,$remote_addr原创 2015-07-14 14:08:00 · 1461 阅读 · 0 评论 -
web api无响应解决方案
How to fix upstream timed out (110: Connection timed out) error in Nginx在Nginx错误日志中,有大量的下列信息:Upstream timed out (110: Connection timed out) while reading response header from upstream转载 2015-06-30 10:21:02 · 1681 阅读 · 0 评论 -
Connection reset by peer的常见原因
http://www.360doc.com/content/13/0624/10/1317564_295123276.shtmlhttp://www.360doc.com/content/13/0624/10/1317564_295123386.shtml转载 2015-06-30 11:19:24 · 1648 阅读 · 0 评论 -
内存池
为什么要使用内存池技术呢? 主要有两个原因:1、减少new/malloc、delete/free次数,减少运行时间;2、避免内存碎片,避免开发人员忘记释放内存造成内存泄露连接:http://www.cnblogs.com/bangerlee/archive/2011/08/31/2161421.htmlnginx内存池分析:http://blog.chinaunix.net/转载 2015-03-05 10:55:43 · 318 阅读 · 0 评论 -
Nginx:双向队列(Queue)
源码文件src/core/ngx_queue.hsrc/core/ngx_queue.c 设计思路Nginx提供一个非常简单的侵入式双向队列(双向链表),也即向每个元素嵌入数据结构的链接结点。这样做的好处在于:1. 省去对数据结构所用内存的管理,进一步减少内存碎片;2. 降低代码复杂度。 另外,通过使用额外的哨兵结点机制,简化了代码。 数据结构nginx转载 2015-02-28 15:54:00 · 1443 阅读 · 0 评论 -
nginx源码设计之美
在这里向nginx的作者Igor Sysoev致敬,他开发了一个如此伟大的作品。 毫不夸张的说,nginx已经展现了一个成功的项目代码是应该如何架构的了。 本文将试图与读者分享这里面的设计之美。大千世界,任何东西都有共通之处。当我们讨论一个东西时,首先要给它定义个边界, 在这边界里有两个东西:内核(Kernel)和用户(User)。nginx作为http服务器(其实远不止),我们给它定转载 2015-02-28 11:07:38 · 842 阅读 · 0 评论 -
nginx源码事件机制
事件机制尤如nginx的心脏一般,不停的运转,保证了nginx的请求响应模式得以正常工作。 本文将剖析事件机制的原理和实现。 nginx本身支持多种机制,如 poll, epoll, select, aio, kqueue等,这里分析epoll,因为这是nginx的杀手锏。 初略接触时,我们大概只知道监听、请求、接受、响应这几个概念。我们沿着这个思维展开,看nginx如何设计这些结转载 2015-02-28 11:12:34 · 406 阅读 · 0 评论 -
nginx的NGX_DEBUG理解
程序都要必备调试信息,以便观察程序运行结果;但是也要有把需要调试信息的运行状况(后台运行)。我们可以采取两种方式来决定是否要调试信息:1.在运行是加入-d表示要打印调试信息,不加的话不要;2.configure时确定是否要调试信息如下:为了获取最丰富的日志信息,我们在进行configure配置时,需要把--with-debug选项加上,这样能生成一个名为NGX_DEBUG的宏,原创 2015-02-27 15:55:14 · 1236 阅读 · 0 评论 -
函数指针的应用
struct ngx_module_s { ngx_uint_t ctx_index; ngx_uint_t index; ngx_uint_t spare0; ngx_uint_t spare1; ngx_uint_t spare2;原创 2015-02-28 09:28:37 · 364 阅读 · 0 评论 -
nginx源码配置图解
nginx配置结构清晰,层次分明,这得益于整个架构的模块化设计,文本将揭示配置文件如何被处理和应用。 整个配置文件解析后的结果如图这样存储。一、解析的核心机制nginx源码里,ngx_conf_t是解析的关键结构体ngx_conf_handler函数里:?123456789101112转载 2015-02-28 11:10:52 · 475 阅读 · 0 评论 -
关于一些代码中定义为空的宏ngx_cdecl的作用
最近在看nginx源代码的时候,在很多函数定义的地方都带有ngx_cdecl这个宏定义。如:int ngx_cdeclmain(int argc, char *const *argv);void ngx_cdeclngx_log_stderr(ngx_err_t err, const char *fmt, ...);结果一看它有声明,仅仅只是一个定义为空的宏。 #def转载 2015-02-27 18:11:49 · 654 阅读 · 0 评论 -
nginx源码构思
nginx源码构思精巧,每每阅读颇有收获,写此文与各码农分享阅读从main开始,流程非常清晰/* 系统错误初始化,将构建ngx_sys_errlist */ ngx_strerror_init();/* 选项处理 */ ngx_get_options(argc, argv); /* 时间初始化, 当前时间:ngx_current_msec */ ngx_time_i转载 2015-02-28 11:06:25 · 335 阅读 · 0 评论 -
nginx免输入密码配置
可以用私钥来做这件事。生成一个解密的key文件,替代原来key文件。openssl rsa -in server.key -out server.key.unsecure然后修改配置文件ssl on; ssl_certificate /home/cert/server.crt; ssl_certificate_key /home/cert/server.key.uns转载 2016-03-24 11:48:04 · 2527 阅读 · 0 评论