深入理解nginx中的错误

 [1] P77 源码打印输出部分"%*s",应该改为“%.*s”,不然不会按照str[i]的长度输出。如果改用ngx_vslprintf可以继续使用"%*s",参考P153 表4-8。ngx自己的fmt不支持"%.*s" 

 

 [2] P97 所有的“extern”都应该改为"exten" 在P96 ngx_http_request_s声明中以及源码中均声明为“exten”。 

  

   [3]P97 倒数第5行,对"http_protocol指向用户请求中的HTTP的起始地址"表述感到怀疑,因为在P96 ngx_http_request_s声明中 http_protocol为ngx_str_t类型。个人认为改为“http_protocol的data域指向用户请求中的HTTP的起始地址,len存储协议版本的字符串长度”更好些。也可能是我误解了,请拍砖 :-P 

  

   [4]P101 倒数第2行 "rc >= NGX_http_SPECIAL_RESPONSE"应该为 "rc >= NGX_HTTP_SPECIAL_RESPONSE",该宏在ngx_http_request.h中77行定义:#define NGX_HTTP_SPECIAL_RESPONSE 300 

   
 [5]P102 倒数第7行 “而 ngx_http_request_t 的返回值是多样的”,根据上下文理解,个人感觉应该改为“而 ngx_http_send_header 的返回值是多样的”. 
   
 [6]P103 第2行 “如同headers_in,ngx_http_request_t也有一个headers_out"。这个地方个人无法理解,求大神解释;headers_in 是ngx_http_request_t的一个成员,而headers_in 的类型是ngx_http_headers_in_t ,该类型中没有headers_out成员。。。 

 [7] P104第三段源代码 TestHead: TestValud\r\n应改为 TestHead: TestValue\r\n 

    [8]P122 表4-2 ngx_conf_set_size_slot 对应的行为中 "K,就表示Kiobyt"应该改为“"K,就表示Kiobyte”。 

 

   [9]P176 下方源码部分的注释部分中所有的“表4-7”应该改为“表4-8” 

   
   [10]P321源码部分处理写事件部分的注释“//判断这个读事件是否为过期事件”感觉应该改为“//判断这个 事件是否为过期事件”
   
   [11]P333 最后一行:”Nginx启动时,ngx_accept_disabled的值就是一个负数,其值为连接总数的7/8“感觉应该改为”Nginx启动时,ngx_accept_disabled的值就是一个负数,其 绝对值为连接总数的7/8“


官方勘误:

1、98页第二段代码注释
“/*以下每个ngx_table_elt_t成员都是RFC1616规范....” ,其中,RFC1616应为RFC2616

2、109页第一段源代码倒数第5行
b->file->name.len = sizeof(filename) - 1;应改为b->file->name.len = strlen(filename) ; 

3、139页表4-5的倒数第二行表格靠右列
ngx_bufs_t类型的成员可以使用nginx_conf_merge_str_value合并宏,应改为:ngx_bufs_t类型的成员可以使用 nginx_conf_merge_bufs_value合并宏

4、97页倒数第5行(非代码行中的倒数第5计,实际在 3) URL参数标题下)
arg 指向用户请求中的URL参数,应该为:args 指向用户请求中的URL参数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nginx是一个高性能的Web服务器,同时也是一个反向代理服务器和电子邮件(IMAP/POP3)代理服务器。它最显著的特点是具有高并发处理能力和低内存占用。为了满足不同用户的需求,nginx提供了模块化的架构,可以通过开发模块来扩展其功能。 深入理解nginx模块开发,首先需要了解nginx的架构。nginx的主要部分包括master进程和worker进程。master进程负责管理worker进程,而worker进程负责处理实际的客户端请求。nginx的模块系统允许开发者向master进程或worker进程添加自定义的功能。 在nginx的模块开发,主要涉及到以下几个方面的内容: 1. 配置文件解析:nginx的配置文件是使用类似于C语言的语法进行解析的。模块开发者需要了解nginx的配置文件语法,并且能够解析和处理自定义的配置项。 2. HTTP请求处理:开发基于HTTP协议的模块时,需要能够处理和解析HTTP请求。模块可以拦截特定的URL,处理请求,并返回相应的响应。 3. 事件处理:nginx使用事件驱动的模型来处理并发请求。模块开发者需要了解事件驱动的机制,实现自己的事件处理逻辑,并与nginx的事件处理系统进行交互。 4. 内存管理:nginx以低内存占用著称,这是因为它使用了自己的内存管理机制。模块开发者需要了解nginx的内存管理方式,并遵循相应的规则。 5. 日志记录:nginx提供了灵活的日志记录功能。模块开发者可以通过定制日志记录方式,将特定的信息记录到指定的日志文件。 总的来说,深入理解nginx模块开发与架构解析需要对nginx的整体架构有深入了解,并具备一定的系统编程和网络编程经验。通过开发和调试模块,可以进一步理解nginx的原理和内部实现,掌握更多高性能Web服务器开发的知识和技巧。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值