nginx:让nginx运行自己的编写第三方模块

本文详细记录了如何在nginx中添加并运行自己编写的第三方模块,该模块的功能是在浏览器上显示"hello world"。从创建ngx_http_mytest_module.c文件,编写config文件,定义ngx_command_t及回调函数,到配置文件中添加location指令,以及解决编译过程中的错误,最终实现了自定义模块的运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缘由

今天阅读 深入理解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

最后的结果


发现错误

  1. conig里面的引号,有一个我用成了中文的引号
  2. 在完成的ngx_http_mytest_module.c里面没有提前声明要使用的函数

代码

完全按照作者要求所写:需要的人可以去 http://taohui.org.cn/下载,本篇讲的是第三章。
我自己还是在网盘里备份一份吧:深入理解nginx第三章例子代码.zip
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值