当前位置: 首页 > news >正文

北京专业做网站推广网站模板中心

北京专业做网站推广,网站模板中心,网站分享的功能怎么做的,维护网站需要多少钱文章目录 前述一、nginx 进程模型基本流程二、源码里的小点1.对字符串操作都进行了原生实现2.配置文件解析也是原生实现待续 前述 通过对 nginx 的了解和代码简单阅读,发现这个C代码的中间件确实存在过人之处,使用场景特别多,插件模块很丰富…

文章目录

    • 前述
    • 一、nginx 进程模型基本流程
    • 二、源码里的小点
      • 1.对字符串操作都进行了原生实现
      • 2.配置文件解析也是原生实现
      • 待续

前述

通过对 nginx 的了解和代码简单阅读,发现这个C代码的中间件确实存在过人之处,使用场景特别多,插件模块很丰富,近些年 nginx 用户量也是飙升,所以和大家一起学习下 nginx 源码。后续通过阅读源码方式不断更新本篇文章,希望能够坚持读下去,并给大家带来 nginx 源码级的阅读体验。[抱拳]

个人阅读的 nginx 代码版本度盘: nginx-release-1.26.0.tar.gz

其他或最新版本见 nginx 官网:https://nginx.org/

一、nginx 进程模型基本流程

在这里插入图片描述
当然了,除了上述进程模型流程,I/O多路复用技术也是必然的,大家可以从目录 nginx-release-1.26.0\src\event\modules\ 下找到:
在这里插入图片描述
这个实现也是比较丰富的,如果不熟悉I/O多路复用,可阅读:I/O多路复用技术最佳学习实践及总结(含完整实现源码) 。

二、源码里的小点

1.对字符串操作都进行了原生实现

详见 nginx-release-1.26.0\src\core\ngx_string.h
在这里插入图片描述

抽取了一个,进行了测试,如下:

#include <bits/stdc++.h>#define  NGX_OK          0
#define  NGX_ERROR      -1#define NGX_MAX_INT_T_VALUE 99999999int
ngx_atoi(unsigned char *line, size_t n)
{int  value, cutoff, cutlim;if (n == 0) {return NGX_ERROR;}cutoff = NGX_MAX_INT_T_VALUE / 10;cutlim = NGX_MAX_INT_T_VALUE % 10;for (value = 0; n--; line++) {if (*line < '0' || *line > '9') {return NGX_ERROR;}if (value >= cutoff && (value > cutoff || *line - '0' > cutlim)) {return NGX_ERROR;}value = value * 10 + (*line - '0');}return value;
}int main()
{unsigned char str[] = "999";std::cout <<  ngx_atoi(str, strlen((char*)str)) - 1 << std::endl;return 0;
}

2.配置文件解析也是原生实现

nginx中配置是以 command 的方式展现的,如 类型 ngx_command_tngx_core_commands nginx 核心运行相关命令的全局变量是的一个结构体数组,附着于 ngx_module_t ngx_core_module 之上。文件:nginx-release-1.26.0\src\core\nginx.c

ngx_core_commands 结构如下,除了 daemon 和 worker_processes (指定工作进程数,auto 表示自动根据 CPU 核心数设置) 其他都折叠起来了。
在这里插入图片描述

ngx_command_t 结构体如下,与上述图片中的参数结合来看,set是对应的回调:

struct ngx_command_s {ngx_str_t             name;ngx_uint_t            type;char               *(*set)(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);ngx_uint_t            conf;ngx_uint_t            offset;void                 *post;
};typedef struct ngx_command_s         ngx_command_t;

相同的:
ngx_http_core_commandsngx_http_core_module 之上。文件:nginx-release-1.26.0\src\http\ngx_http_core_module.c

ngx_mail_core_commandsngx_mail_core_module 之上。文件:nginx-release-1.26.0\src\mail\ngx_mail_core_module.c

类推的,其他模块的配置都是这样,通过预定义的 static ngx_command_t 静态全局变量绑定到自身模块结构体 static ngx_core_module_t ngx_*_module_ctx 上去。上述就是nginx的配置方式了,需要看哪个配置直接去对应的 src/* 模块看即可。

待续

http://www.mmbaike.com/news/39776.html

相关文章:

  • 建设网站细节seo外链怎么发
  • 陕西网站建设托管百度购物平台客服电话
  • 营销型网站建设亏1seo优化方案案例
  • 网站优化入门百度广告代理商查询
  • 见网页制作的公司网站公司策划推广
  • 武汉市城乡建设局网站百度广告服务商
  • java毕业设计代做网站关键字排名查询工具
  • 专门做正品的网站抚州seo排名
  • 深圳企业网站定制公司软文网站模板
  • 网站建设的后台登录友情链接还有用吗
  • 北京web网站开发培训班百度公司总部在哪里
  • 网站怎么做双机房切换广告推广语
  • 新手如何搭建网站广告投放方案
  • wordpress制作婚礼网页优化seo
  • 推广渠道包括哪些五年级上册语文优化设计答案
  • 河北提供网站建设公司哪家好啥是网络推广
  • wordpress metaslider广州百度seo优化排名
  • 招商网站建设搜狐财经峰会
  • 宝鸡专业建站公司友链购买有效果吗
  • 江西鄱阳专业做网站seo优化工具软件
  • 移动网站怎么做北京企业推广
  • 北京专业网站设计制作电商运营推广是做什么的
  • 大庆市建设大厦网站网页代码
  • 网站测试设计南京百度seo
  • 设计师 英文网站长沙正规seo优化价格
  • 动态网站建设实训报告总结河南网站关键词优化代理
  • 食品企业网站建设方案sem广告
  • 交友网站免费建设网站推广方案策划
  • 学做网站平台google play官网下载
  • soho在哪里做网站免费自学电商教程