- 博客(38)
- 收藏
- 关注
原创 Nginx源码分析文章目录
微信公众号:Nginx源码分析关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!本公众号持续分析输出源码分析文章。暂定分析三个源码系列,分别为Nginx源码分析, Redis源码分析和Lua源码分析。首先从Nginx源码分析系列开始,从你知其然,且知其所以然,更加高效的使用Nginx。从上帝视角分析问题,体验各种酸爽。编译配置脚本...
2019-07-27 11:30:02 444
原创 第一篇: nignx初始化错误处理日志
参考欢迎加微信:zxy1263579326 互相学习本节内容从本节开始,我们开始真正的分析nginx源码。我并没有一个准确的先后顺序,想到哪就写到哪里。当然,有很多地方我也不懂代码的含义,这些地方我会表明,然后先略过去。启动main函数在src/core/nginx.c文件中。我们首先看一下nginx启动的部分,启动部分有很多函数,我们逐个的分析一下每个函数的作用。ngx_deb...
2020-03-27 09:03:36 679
原创 nginx启动命令解析
本节内容本节分析一下ngx_get_options()函数,这个函数的作用就是解析nginx的启动命令传递的参数,比如/usr/local/nginx/sbin/nginx -s reload, /usr/local/nginx/sbin/nginx -t等。http://nginx.org/en/docs/switches.htmlnginx supports the followin...
2019-10-10 11:14:43 757
原创 nginx启动 -- 错误日志相关
微信公众号:Nginx源码分析关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!本节内容从本节开始,我们开始真正的分析nginx源码。我并没有一个准确的先后顺序,想到哪就写到哪里。当然,有很多地方我也不懂代码的含义,这些地方我会表明,然后先略过去。启动main函数在src/core/nginx.c文件中。我们首先看一下ngi...
2019-08-26 10:22:38 1055
原创 Nginx源码分析之--auto/module 脚本
微信公众号:Nginx源码分析关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!断更说明前两周换工作,在准备面试的各种资料,各种头疼啊~~~从本周开始,继续更新……本节简介本节我们分析一下auto/endianness脚本。大端和小端在分析这个脚本之前,我们先看一个内容,大端和小端,这两个名词是用于表示硬件的字节序。顾名...
2019-08-19 09:49:14 539
原创 Nginx源码分析之--auto/lib脚本
微信公众号:Nginx源码分析关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!内容简介本文分析auto/lib相关脚本的功能。从脚本名称我们也能够知道,这部分是和第三方库相关的。比如pcre库,openssl, perl等。我们首先看一下这个目录中的各个脚本的作用。如下图:auto/lib/conf脚本这个脚本就在con...
2019-08-02 09:46:44 463
原创 Nginx源码分析之--os相关脚本
微信公众号:Nginx源码分析关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!回顾我们在上一篇文章中分析了和编译器相关的脚本。如果大家不明白的话也没关系,那部分代码对于我们分析nginx源码没有影响。我们分析的目的也是让大家看到了一个完整的项目是如何实现各种自动化配置选择的。选择平台我将在本文中分析nginx是如何发现当前的宿...
2019-07-31 09:20:41 248
原创 Nginx源码分析之--编译器相关脚本
微信公众号:Nginx源码分析关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!回顾前面我们介绍了nginx的很多脚本,比如测试操作系统是否支持某个特性的auto/feature脚本,测试类型变量长度的auto/types/sizeof脚本等等。有时候大家可能会问,nginx为什么搞这么多脚本呢?其实答案很简单:①.为了保证n...
2019-07-29 09:52:08 207
原创 Nginx源码分析之--auto/include脚本
微信公众号:Nginx源码分析关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!回顾上一篇文章我们详细的分析了auto/feature脚本的作用,该脚本的主要作用是测试宿主系统是否支持某个特性。下面我们分析上图中最后一个脚本文件auto/include。auto/include 脚本测试当前的宿主操作系统中是否存在某个头文件...
2019-07-26 10:00:35 242
原创 手把手教你nginx源码--auto/feature
微信公众号:Nginx源码分析关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!回顾来,看下图:图中还剩下auto/feature和auto/include脚本没有分析,其他的几个辅助脚本已经分析完了。那么本文就详细分析一下一个非常非常重要的脚本,auto/feature.写在分析之前为什么说auto/feature脚本非...
2019-07-24 09:37:35 567
原创 Nginx源码分析之-auto/types/value和auto/types/uintptr_t
微信公众号:Nginx源码分析关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!回顾在上周分析过了auto/types/typedef脚本,以及auto/types/sizeof脚本。我们简单的回忆一下这两个脚本的作用:auto/types/typedef: 判断数据类型是否存在,如果不存在则生成相应的typedef语句。au...
2019-07-22 09:38:15 220
原创 Nginx源码分析之---auto/types/typedef脚本
微信公众号:Nginx源码分析关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!回顾我们在上一篇文章中详细的分析了auto/types/sizeof脚本源码,本文我们继续分析auto/types目录下的脚本文件。我们首先回顾一下nginx中的大致辅助脚本图片,如下图:本文讲述一下auto/types/typedef脚本,aut...
2019-07-19 08:03:43 184
原创 Nginx源码分析之--auto/types/sizeof脚本
微信公众号:Nginx源码分析关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!回顾我们在上一篇文章中详细的分析了auto/define,auto/have,auto/nohave脚本源码,本文我们继续分析其他辅助脚本文件。我们首先回顾一下nginx中的大致辅助脚本图片,如下图:auto/types脚本在auto/types目...
2019-07-18 10:16:38 350
原创 Nginx源码分析之--辅助脚本
微信公众号:Nginx源码分析关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!辅助脚本我们在前面的几篇文章中详细的分析了auto/options,auto/init,auto/sources脚本源码,除此之外,nginx还有一些其他的辅助脚本,用于完成一些特定的功能。我总结了一下在nginx中遇到的辅助脚本,如下图所示:我们本...
2019-07-16 09:37:54 301
原创 Nginx源码分析之--auto/sources脚本
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!回顾上一篇文章我们详细的讲解了auto/init文件,该文件主要是初始化一些文件目录,便于后面的编译过程。configure执行auto/init之后就会执行auto/sources文件,所以本文分析一下auto/sources文件,这个文件虽然内容很多,但是结...
2019-07-12 10:53:02 303
原创 Nginx源码分析之---auto/init脚本
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!回顾上一篇文章我们详细的讲解了auto/option文件,该文件主要是为了初始化传递给configure的命令参数。本文继续讲解configure脚本调用的第二个文件auto/init。auto/init这个脚本主要是进行一些变量的初始化工作,为后续的Make...
2019-07-10 13:20:41 269
原创 configure分析之 auto/options脚本
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!开篇nginx中configure脚本在编译nginx的过程中是非常重要的,它完成了各个编译参数的配置,路径的配置等功能。从本文开始,分析一下configure脚本的工作过程。首先,我们看一下configure脚本的构成,如下图所示:我们会分析每个过程,从而...
2019-07-08 18:24:06 803
原创 从零开始分析Nginx源码
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!开篇Nginx是一款非常出色的服务器软件,从开始工作到现在,周围所有的公司都在使用Nginx。在多年的使用过程中,逐渐对Nginx的源码产生了浓厚的兴趣,我不满足于仅仅会使用,我想更加深入的理解它的内部工作原理。只有深入理解了内部实现,我们才能享受到从”上帝视角“...
2019-07-04 09:38:27 169
原创 linux文件描述符---学不会的找我
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!请关注个人博客, 戳这里首先了解一下linux中文件描述符和打开的文件列表中间的关系。在linux中,有三种数据结构,分别如下:1、每个进程都有一个打开的文件描述符表(the per-process open file descriptor table)。2...
2019-06-26 10:27:17 164
原创 合并http配置项
微信公众号:郑尔多斯关注「郑尔多斯」公众号 ,回复「领取资源」,获取IT资源500G干货。升职加薪、当上总经理、出任CEO、迎娶白富美、走上人生巅峰!想想还有点小激动关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!前言前面的文章已经从源码级别将配置的解析过程说的很清楚了,本文我们学习一下nginx的http配置的merge...
2019-04-11 20:29:56 234
原创 nginx正则表达式(上篇)
微信公众号:郑尔多斯关注「郑尔多斯」公众号 ,回复「领取资源」,获取IT资源500G干货。升职加薪、当上总经理、出任CEO、迎娶白富美、走上人生巅峰!想想还有点小激动关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!前言在Nginx中location, server_name,rewrite等模块使用了大量的正则表达式,通过...
2019-03-25 13:07:28 2046
转载 mysql密码忘了怎么办
微信公众号:郑尔多斯关注「郑尔多斯」公众号 ,回复「领取资源」,获取IT资源500G干货。升职加薪、当上总经理、出任CEO、迎娶白富美、走上人生巅峰!想想还有点小激动mysql 密码忘记了怎么办原文链接首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的状态下,其他的用户...
2019-02-27 18:52:56 337
原创 初始化监听端口
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!初始化监听端口前言上文介绍了ngx_http_optimize_servers()函数的一部分内容,下面继续介绍剩下的重头戏。初始化端口for (p = 0; p < ports->nelts; p++) {// 前面的内容已经介绍完了 ...
2019-02-27 09:38:55 232
原创 listen优化
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!listen优化前言我们在前面介绍了listen和server_name指令的处理过程,下面我们继续对这两个指令进行分析。nginx的http指令的处理函数为ngx_http_block(),在该函数的最后有会调用ngx_http_optimize_serve...
2019-02-25 09:35:08 215
原创 server_name 源码分析
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!server_name 源码分析前言server_name和listen指令是server block中最重要的两个指令。server_name指定了服务器的名称。listen指出了服务器监听的地址和端口号。我们在前面的文章中已经介绍了listen指令的...
2019-02-22 09:04:38 209
原创 nginx listen指令浅析之add listen
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!nginx listen指令浅析之add listen前言我们在上篇文章中介绍了address:port的解析过程,这篇文章继续讲解解析listen指令的后续过程。解析listen指令的函数是 ngx_http_core_listen(),这个函数的前半部分是...
2019-02-20 09:28:31 494
原创 listen源码分析第一篇 address:port分析
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!前言本篇文章详细介绍一下listen指令的解析,以及socket的创建过程。listen的内容太多了,并且牵涉到后面的很多地方,所以只能再一次的回到这里仔细的学习listen指令的解析过程。首先要参考listen的nginx官方文档,知道listen的用法,然后...
2019-02-18 08:39:43 923
原创 nginx共享内存分析
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!共享内存共享内存是linux下最基本的进程间通信方式。它通过mmap或者shmget系统调用在内存中创建一块连续的线性地址空间,使用munmap或者shmdt系统调用可以释放这块内存。使用共享内存的好处:当多个进程使用同一块共享内存时,在任何一个进程中修改了共享内...
2019-02-11 17:21:28 422
转载 ICMP协议
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!校验和算法这里介绍的校验和算法被IP收不,ICMP首部,TCP,UDP首部所使用。下面摘自《TCP/IP协议簇》的IP头校验和算法:发送时:将校验和字段置为0; 将整个首部分为16bit的部分,求和; 取反码,填入到校验和字段中;接收时:...
2019-01-08 07:42:09 273
原创 Nginx事件模块 -- 第七篇 创建连接
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!事件驱动框架我们前面分析过,在ngx_event_process_init()中,会将每个监听端口的rev->handler设置为ngx_event_accept()函数,然后把对应的读事件加入到epoll驱动模块中。这样,在执行ngx_epoll_proc...
2019-01-02 12:04:12 284 1
转载 nginx事件模块 -- 第六篇 stale event
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!本文章原作者aweth0me,原文地址在这里点
2018-12-27 17:50:33 177
原创 nginx事件模块 -- 第五篇 epoll add
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!内容回顾上一篇文章我们介绍了Nginx的epoll初始化过程。从这一篇文章开始我们继续介绍ngx_epoll_module的源码,包括添加事件,删除事件,触发事件等。ngx_epoll_module_ctx源码static ngx_event_module_t...
2018-12-26 12:59:31 156
原创 nginx事件模块 -- 第四篇
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!剧情回顾上一篇文章中我们详细介绍了Nginx中事件模块的初始化过程。这里简单的回顾一下:Nginx的worker进程启动之后,会首先进行worker的初始化,在初始化过程中将遍历调用所有模块的init_process函数。与Nginx事件机制相关的三个模块中,只有...
2018-12-25 13:53:13 100
原创 nginx事件模块 -- 第三篇
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!内容回顾前面的几篇文章中,我们介绍了nginx的事件模块的基础知识。我们知道nginx中包含了三个与事件相关的module,分别为ngx_event_module,ngx_event_core_module,ngx_epoll_module。我们也分别分析了这三个...
2018-12-24 00:30:42 170
原创 nginx事件模块 -- 第二篇
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!事件机制上一篇文件我们简单的介绍了ngx_event_block()函数的功能,这个函数用于解析events指令,引入事件机制。其实真正的工作是在ngx_event_core_module中完成的,这个模块可以解析use,work_connections等指令,这...
2018-12-15 14:45:27 144
原创 nginx事件模块 -- 第一篇
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!事件机制下面是我们对nginx事件相关的配置,如下:events { worker_connections 1024; use epoll;}我们明确的使用了epoll机制,在nginx中,和事件相关的模块一共有三个,分别为ngx_eve...
2018-12-15 00:25:11 103
转载 Linux的IO模型
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!同步/异步与阻塞/非阻塞的理解线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。用线程执行程序流的过程去理解同步异步,阻塞非阻塞。同步异步关注的是流执行过程需不需要等待外部调用的结果,而阻塞非阻塞关注的是外部调用对流本身...
2018-12-11 09:50:07 214 1
原创 nginx对端口的处理 -- 第三篇
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!ngx_open_listening_sockets 1ngx_int_t 2ngx_open_listening_sockets(ngx_cycle_t *cycle) 3{ 4 int reuseaddr...
2018-12-08 15:58:27 742
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人