缘由
今天阅读 深入理解ngnix 的第三章,需要完成一个第三方模块,然后添加到nginx里面去,然后我在对应的网页访问的时候就可以直接调用我写的第三方模块,这个第三方模块只是发浏览器发了一个hello world而已。
流程
流程中的第一个是对应书中的页数
- 1、P72:建一个ngx_http_mytest_module.c的文件,写我的新添加的模块的代码,因为还是比较简单的,所以用一个文件就可以了。
- 2、P79:为了将模块能够编译进Ngnix,源代码必须在一个文件夹下,然而在文件夹下建一个config的文件用于没告诉nginx如何编译本模块
- 3、P80:完成config文件的编写
ngx_addon_name=ngx_http_mytest_module
HTTP_MODULES="$HTTP_MODULES ngx_http_mytest_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_mytest_module.c" - 4、P89:完成ngx_command_t的编写
- 5、P90:完成了与ngx_command_t里面所指的回调方法的书写。
- 6、指出了应该在配置文件中如何编写,因为我用的就是默认的那个nginx的配置文件,所以直接在配置文件中添加如下字段。
Location /test {
mytest;
}
见下图所示:
- 7、根据91页完成在HTTP初始时的框架的需要调用的回调函数的书写,由于不会在HTTP初始化时使用任何回调函数,所以全部置为NULL
- 8、P92:完成ngx_module_t的编写
- 9、P106:完成了ngx_http_mytest_handler 方法的编写,发送hello world给浏览器。
编译过程
其中两个without的原因是因为我没有安装相应的包,只有第一个参数是为了添加第三方的模块,也就是我新完成模块./configure --add-module=/home/asd/Downloads/chapter3/helloworld --without-http_rewrite_module --without-http_gzip_module
剩下的就是make和make install
最后的结果
发现错误
- conig里面的引号,有一个我用成了中文的引号
- 在完成的ngx_http_mytest_module.c里面没有提前声明要使用的函数
代码
完全按照作者要求所写:需要的人可以去
http://taohui.org.cn/下载,本篇讲的是第三章。
我自己还是在网盘里备份一份吧:深入理解nginx第三章例子代码.zip