4.5.2 Nginx组件/编译/bug解决方案

蒸汽
蒸汽
发布于 2024-10-18 / 15 阅读
0
0

4.5.2 Nginx组件/编译/bug解决方案

内容:

  • 1.组件如何使用

  • 2.过滤器模块实现

image-20241018202757798.png

image-20241018203229895.png

组件

nginx内部组件非常多,我们可抽离出:

  • 内存池

  • 线程池

  • 共享内存

  • 红黑树

  • ngx_array_t

  • ngx_list_t

  • ngx_hash_t

  • ngx_rbtree_t

  • ngx_queue_t

  • 原子操作

  • 日志

  • slab 共享内存组织方式

  • ngx_str_t

typedef struct {
    size_t  len;
    u_char *data;
} ngx_str_t;

//问题:为什么要len?直接string不行吗?

//答:nginx的字符串直接放到内存池中的,需要len来在内存池分配合适大小的内存

ps:测试时bug解决思路

  • 报错1:

  • 看报错,一个一个加入所需的头文件。

  • 报错2:

  • 先 -I链接库, 库没问题了再看报错

  • 把缺少的头文件一个一个加在源文件中

  • 报错3:链接库非常多

  • 换makefile/cmake

  • 报错4:发现nginx存在内部定义但未实现函数

  • 直接放到源文件开头


评论