- 博客(4)
- 资源 (3)
- 收藏
- 关注
原创 nginx脚本原理if指令实现详解
函数也比较简单,=号后面的条件是常量还是变量(或复杂变量),如果是常量直接生成ngx_http_script_value_code_t,存放常量的值和长度,执行函数为ngx_http_script_value_code。最后则是生成ngx_http_script_if_code_t,其执行函数是ngx_http_script_if_code。其执行函数为ngx_http_script_var_code。变量的code_t,执行函数为ngx_http_script_var_code,计算(获取)出。
2024-06-12 15:51:21
1152
原创 nginx脚本原理(复杂变量)详解
ngx_http_script_engine_t会依次执行以code_t结尾的单元中的函数 code,nginx会每个执行翻译(编译)成一个对于的code_t结尾的结构体,最终使用ngx_http_script_engine_t来执行其中的每个结构体的code函数。变量使用的是ngx_http_script_var_code_t,其中的index就是该变量在全局数组中的下标,调用ngx_http_script_add_var_code进行添加到lengths和values中去。//值长度,变量值的长度。
2024-06-11 14:48:02
977
原创 nginx-变量
第二个参数就是变量值,需要我们填充该结构体,data则是我们在ngx_http_add_variable时,填充到ngx_http_variable_s 结构体中的data,在某个地方使用了你的变量,那么ng就会调用 你定义好的 get_handler来获取变量的值。//变量标签特性,NGX_HTTP_VAR_CHANGEABLE ,NGX_HTTP_VAR_NOCACHEABLE。//变量的索引值,内置变量都在存储在一个全局的数组中的,通过下标去读取变量是最快的,nginx在启动的时候会初始化。
2024-06-07 15:14:16
995
原创 nginx c++模块编译
所有的第三方模块都是按c++编译了,如果其中的某些模块需要按c编译,那么在 the addons source 处的for循环中做.c和.cpp判断,或者文件名的判断特殊处理。先说下为什么不能使用c++编译nginx,nginx是纯c写的,而且c++是兼容c的,但是用c++(g++)编译nginx的框架,就会出一大堆的错误。这样的代码使用c编译是没问题的,但是使用c++编译就会报错,c的语法没那么严格。跟nginx对接的地方,和c版一样,只不过代码中关于nginx需要用的c部分还是的使用c的编译方式。
2024-06-07 15:11:09
376
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人