- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Nginx 模块的基本结构
模块的基本结构
在这⼀节我们将会对通常的模块开发过程中,每个模块所包含的⼀些常⽤的部分进⾏
明。这些部分有些是必须的,有些不是必须的。同时这⾥所列出的这些东西对于其
他类型的模块,例如 filter 模块等也都是相同的。
模块配置结构
基本上每个模块都会提供⼀些配置指令,以便于⽤户可以通过配置来控制该模块的⾏
为。那么这些配置信息怎么存储呢?那就需要定义该模块的配置结构来进⾏存储。
⼤家都知道 Nginx 的配置信息分成了⼏个作⽤域(scope ,有时也称作上下⽂) ,这就是
main ,server 以及 location 。同样的每个模块提供的配置指令也可以出现在这⼏个作⽤
域⾥。那对于这三个作⽤域的配置信息,每个模块就需要定义三个不同的数据结构去
进⾏存储。当然,不是每个模块都会在这三个作⽤域都提供配置指令的。那么也就不
⼀定每个模块都需要定义三个数据结构去存储这些配置信息了。视模块的实现⽽⾔,
需要⼏个就定义⼏个。
有⼀点需要特别注意的就是,在模块的开发过程中,我们最好使⽤ Nginx 原有的命名
习惯。这样跟原代码的契合度更⾼,看起来也更舒服。
对于模块配置信息的定义,命名习惯是ngx_http_module
name_(main|srv |loc)_conf_t。这⾥有个例⼦,就是从我们后⾯将要展⽰给⼤
家的 hello module 中截取的。
typedef struct
{
ngx_str_t hello_string;
ngx_int_t hello_counter;
}ngx_http_hello_loc_conf_t;
模块配置指令
⼀个模块的配置指令是定义在⼀个静态数组中的。同样地,我们来看⼀下从 hello
module 中截取的模块配置指令的定义。
static ngx_command_t ngx_http_hello_commands[ = {
{
ngx_string(hello_string),
NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1,
ngx_http_hello_string,
NGX_HTTP_LOC_CONF_OFFSET,
offsetof(ngx_http_hello_loc_conf_t, hello_string),
NULL },
{
ngx_string(hello_counter),
NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
ngx_http_hello_counter,
NGX_HTTP_LOC_CONF_OFFSET,
offsetof(ngx_http_hello_loc_conf_t, hello_counter),
NULL },
ngx_null_command
};
其实看这个定义,就基本能看出来⼀些信息。例如,我们是定义了两个配置指令,⼀
个是叫 hello_string ,可以接受⼀个参数,或者是没有参数。另外⼀个命令是
hello_counter ,接受⼀个 NGX_CONF_FL G 类型的参数。除此之外,似乎看起来有
点迷惑。没有关系,我们来详细看⼀下 ngx_command_t ,⼀旦我们了解这个结构的详
细信息,那么我相信上述这个定义所表达的所有信息就不⾔⾃明了。
ngx_command_t 的定义,位于src/core/ngx_conf_file.h中。
struct ngx_command_s {
ngx_str_t name;
ngx_uint_t type;
char *(*set)(ngx_conf_t *cf, ngx_command_t
ngx_uint_t conf;
您可能关注的文档
- html标记及文档结构.doc
- 试验路段总结垫层.docx
- 铁锋区代理发表职称论文发表安全监测监控系统升级改造论文选题题目.docx
- 卫生间典型布置和做法(建筑设计).doc
- 计算机专业用语单词.docx
- 禅城区代理发表职称论文发表胃切除术溃疡出血临床效果论文选题题目.docx
- 锅炉职称考试题.docx
- 飘窗板施工方案修改版.doc
- 咨询合作回顾及展望.ppt
- CAD高级应用2.doc
- DB3205T 1033-2021 旅游咨询服务机构评价规范.docx
- DB21T 2227.10-2014 辽菜 第10部分:扒三白.docx
- DB21_T 2227.9-2014 辽菜 第9部分:小鸡炖蘑菇.docx
- DB22_T 884-2011 喀尔巴阡蜜蜂.docx
- DB22_T 886-2011 卡尼鄂拉蜜蜂.docx
- DB22_T 989-2011 高加索蜜蜂(标准规范).docx
- DB22_T 885-2011 意大利蜜蜂(标准规范).docx
- DB3203T1009-2021窖栽韭黄生产技术规程.docx
- DB3210_T 1105-2022 扬粳3012种子生产技术规程.docx
- DB3210_T 1103-2022 乡村小微湿地修复规范.docx
文档评论(0)