![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深入理解Nginx
文章平均质量分 78
时间文盲
不期而遇,简单一点。
展开
-
Nginx学习笔记(五):怎样使用HTTP配置(上)
前言上一篇动手实践一下简单HTTP模块的开发,我们知道调用其模块需要先能够读取nginx.conf中的nginx.conf配置项。这篇学习笔记就是关于HTTP模块怎样获取感兴趣的配置项。内容处理HTTP配置项可以分为以下四个步骤:创建数据结构用于存储配置项对应的参数;设定配置项在nginx.conf中出现时的限制条件与回调方法;实现2中的回调方法,或使用Nginx框原创 2014-01-10 23:40:16 · 1783 阅读 · 0 评论 -
Nginx学习笔记(十一):Nginx的架构设计
前言开始学习书的第三部分,深入Nginx了。另外,越发在Nginx身上看到了之前实习公司所开发系统的影子,真的是感谢那么一段实习经历。Nginx架构设计这里先说下Nginx设计时重视的几个关键点:性能:包括网络性能,单词请求的延迟性,网络效率;(名词就不解释了~)可伸缩性:可通过添加组件来提升服务,或者允许组件之间具有交互功能;简单性:组件的简单程度,便于理解和实现原创 2014-02-15 22:10:15 · 3091 阅读 · 2 评论 -
Nginx学习笔记(九):红黑树
前言回家了,陪了爸妈几天,手头上所有的事情全部放下。现在空闲了下来,继续保持学习状态。争取年前把书中前两部分搞定。年后,重点论文与源码深入,还有开始新的计划。高级数据结构总结主要参考《深入理解Nginx》原创 2014-01-25 19:20:36 · 2552 阅读 · 2 评论 -
Nginx学习笔记(十八):事件处理框架
前言如果接着上两篇笔记走的话,现在就应该说worker循环工作中的核心处理方法ngx_process_events_and_timers()。但是在看这个功能函数之前,需要先学习相关的的事件模块内容。这一块也算是我学习Nginx的核心了,里面有许多比较有趣的内容,比如常见的负载均衡,“惊群”现象等等。当然,最重要的还是Nginx中的epoll事件驱动机制。原创 2014-04-08 19:38:51 · 2520 阅读 · 0 评论 -
Nginx学习笔记(十九):Nginx连接
前言上篇笔记记录了事件处理框架,以及事件的结构定义。这篇笔记开始Nginx连接定义。Nginx定义了基本的数据结构ngx_connection_t来表示连接,这类连接标识是由客户端主动发起、Nginx服务器被动接收的TCP连接,这类可以称为被动连接。还有一类连接,在某些请求的处理过程中,Nginx会试图主动向其他上游服务器建立连接,并以此连接与上游服务器通信,Nginx定义ngx_peer_c原创 2014-04-15 20:01:50 · 4015 阅读 · 1 评论 -
Nginx学习笔记(十五):ngx_setproctitle()
前言这是一个小插曲。。在ngx_worker_process_cycle()函数里面有个ngx_setproctitle()用来修改worker进程名字。然后,发现里面的东西很有趣。。关键是里面内容以前我是不知道的,在此记录。进程名称在哪儿简单来说,该函数就是用来修改进程名字的。这里参考博文《Linux修改进程名称》,在此感谢博主。Linux下用ps命令可以看到显示的进原创 2014-03-13 09:37:32 · 3047 阅读 · 1 评论 -
Nginx学习笔记(十六):worker进程的循环工作
前言上篇是在看ngx_worker_process_cycle()中的一个插曲,这篇继续,现在还不可能做到全知全解,只能随着源码的深入慢慢地了解。worker进程如何循环工作Nginx采用信号的IPC方式对worker进程进行控制,其中的ngx_terminate、ngx_quit、ngx_repon都将由在ngx_signal_handler方法根据收到的信号进行处理。而信号原创 2014-03-16 10:29:45 · 3389 阅读 · 0 评论 -
Nginx学习笔记(十七):master进程的循环工作
前言在ngx_master_process_cycle()中,master进程设置屏蔽信号,通过管理worker子进程实现重启、平滑升级、更换日志、配置文件实时生效等功能。它的实现依旧使用的是信号控制。Master进程的循环master进程循环所做的事情不算复杂,但是却比较多,因为需要处理的信号比较多。主要过程就是:master进程挂起时收到到信号被激活,调用信原创 2014-03-23 13:28:21 · 1717 阅读 · 0 评论 -
Nginx学习笔记(十三):Nginx启动流程
前言这两天没什么任务,一边瞅瞅论文,再一遍抽时间学习Nginx,就是有点单调乏味。。学习了一点点,就那么一点点。从main开始的时候,各种的杂代码很多,就忽略了,根据书中脉络,先把主干找出来,然后再细看吧。原创 2014-02-18 18:56:02 · 1384 阅读 · 0 评论 -
Nginx学习笔记(二):配置文件
前言学习笔记第二篇,之前想直接跳过去的,因为感觉比较枯燥。但是后面发现配置非常需要了解,所以重头看。原创 2014-01-04 12:48:35 · 3007 阅读 · 0 评论 -
Nginx学习笔记(零):ubuntu下安装pcre、zlib、openssl
前言准备抽出空闲时间学Nginx,最近比较忙,所以先把前期环境搭好。Nginx需要安装的工具(1)GCC、G++编译器G++编译器用于编译使用C++编写的Nginx HTTP模块。 apt-get install build-essential apt-get install libtool(2)PCRE(Perl Compatible Regular Expre原创 2013-12-07 22:42:07 · 6392 阅读 · 2 评论 -
Nginx学习笔记(一):Configure命令详解
前言一直打算深入学习一下开源项目,这一个月来的任务,对于修改IPMI开源软件也确实增长了对于开源项目的认识,期间碰到与解决的问题也让我收获不小。这一块可以说是为我学习Nginx开了个好头。为什么学习Nginx?当然是随主流,毕竟群众的眼睛是雪亮的。基本上,我能搜到的被推荐的开源项目,Nginx基本都在推荐之列。不犹豫,就是它了。原创 2014-01-01 22:26:07 · 9624 阅读 · 2 评论 -
Nginx学习笔记(六):怎样使用HTTP配置(下)
前言接着上篇,主要记录下HTTP模块预设的的14种配置项解析以及用户自定义的处理方法,然后还有配置项的合并。处理方法皆为ngx_command_t中成员set值: char *(*set)(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);Nginx中14种预设配置项解析方法以上篇中提到的n原创 2014-01-11 15:27:41 · 2983 阅读 · 0 评论 -
Nginx学习笔记(七):HTTP配置模型
前言通过书中前面两节的学习,已经基本上了解了怎么获取感兴趣的配置项。这篇主要就是学习HTTP配置模型的实现。HTTP配置模型原创 2014-01-14 21:36:30 · 1849 阅读 · 0 评论 -
Nginx学习笔记(三):封装的数据结构
前言正式抽时间学习Nginx,不能保证每天都有时间学这个,毕竟实习以及其他方面还有很多的事情需要,但一定会利用好时间,充实自己。正文Nginx为了做到跨平台,本身定义、封装了些数据结构。原创 2014-01-05 11:18:41 · 2304 阅读 · 0 评论 -
Nginx学习笔记(八):HTTP过滤模块
前言看了三天Nginx的访问第三方服务,大概的内容知道了,包括使用upstream以及subrequest,实质就是Nginx作为反向代理服务器。按照书中方法把代码实现了一遍,但是不知道根本,总归一句,就是对代码不熟。决定放弃这一章的梳理与总结,直接跳到简单过滤模块的开发这一章学习。HTTP过滤模块原创 2014-01-19 12:08:59 · 3216 阅读 · 0 评论 -
Nginx学习笔记(十二):核心结构体
前言保持。。。核心结构Nginx核心的框架代码是一直在围绕 ngx_cycle_t这个核心结构体来控制进程运行的。无论是master管理进程,worker工作进程还是cache manager(loader)进程,它们都毫无例外地拥有唯一的一个ngx_cycle_t结构体。ngx_cycle_t结构体首先,Nginx的可配置性完全依赖于nginx原创 2014-02-16 17:06:37 · 2116 阅读 · 0 评论 -
Nginx学习笔记(四):Hello Nginx!
前言这一篇开始动手第一个简单模块开发,一步一步的来。原创 2014-01-08 20:38:21 · 3700 阅读 · 0 评论 -
Nginx学习笔记(二十):内存池分析
前言Nginx事件模块中在分配存储配置项参数的结构体时需要从内存池中分配内存,然后看代码的时候觉得这一块可以好好研究下。网上一搜果然是有大量的文章,所以就学习笔记下。这里推荐阿里数据平台的博文《Nginx源码分析-内存池》。Nginx内存池的设计也是蛮漂亮的,大块内存以及小块内存都有考虑到,这里很需要学习其思想,以后非常有可能会用到。原创 2014-04-22 15:27:04 · 1834 阅读 · 0 评论 -
Nginx学习笔记(十):基数树
前言 接上篇。。。基数树ngx_radix_tree_t 基数树也是一种二叉查找树,它要求存储的每个节点必须以32位整型作为任意两节点的唯一标识。另外,基数树与红黑树不同的一点:ngx_radix_tree_t会负责分配每个节点占用的内存。也因为这一点,基数树不像红黑树灵活,目前在Nginx中应用不广泛。原创 2014-02-06 18:51:31 · 3264 阅读 · 0 评论 -
Nginx学习笔记(十四):创建worker子进程
前言接着上篇的启动流程,先从创建worker子进程,然后worker进程的循环执行,之后再master进程的执行,直接源码分析,看一点是一点。创建worker子进程OK,从这里开始。。。static voidngx_start_worker_processes(ngx_cycle_t *cycle, ngx_int_t n, ngx_int_t type){ n原创 2014-03-09 11:15:15 · 2759 阅读 · 0 评论