解剖Nginx·模块开发篇(6)配置文件config入门
本文介绍 config 文件的初级写法,作为入门。首先你要知道 config 其实就是一个 shell 脚本,是在./configure
的时候调用的。所以你可以用写 shell 脚本的方式来写 config。一般的形式如下:
ngx_addon_name=ngx_http_XXXXXXXXXXXXX_module
HTTP_MODULES="$HTTP_MODULES ngx_http_XXXXXXXXXXXXX_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_XXXXXXXXXXXXX_module.c"
这三句话的含义是:
- 模块名称
- 模块类型(表征了其作用域)
- 模块源文件
所以不同功能的模块的配置文件都大同小异:
Handler 模块的配置文件
如果模块名称为 ngx_http_poechant_handler_module,那么配置文件内容如下:
ngx_addon_name=ngx_http_poechant_handler_module
HTTP_MODULES="$HTTP_MODULES ngx_http_poechant_handler_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_poechant_handler_module.c"
Filter 模块的配置文件
如果模块名称为 ngx_http_poechant_filter_module,那么配置文件内容如下:
ngx_addon_name=ngx_http_poechant_filter_module
HTTP_AUX_FILTER_MODULES="$HTTP_AUX_FILTER_MODULES ngx_http_poechant_filter_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_poechant_filter_module.c"
以 nginx-http-footer-filter 模块为例
ngx_addon_name=ngx_http_footer_filter_module
HTTP_FILTER_MODULES="$HTTP_FILTER_MODULES ngx_http_footer_filter_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_footer_filter_module.c"
Load balancer 模块的配置文件
以 ngx_http_php_memcache_standard_balancer 模块为例:
ngx_addon_name=ngx_http_php_memcache_standard_balancer
HTTP_MODULES="$HTTP_MODULES ngx_http_php_memcache_standard_balancer_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_php_memcache_standard_balancer.c"
复杂一些的配置文件
复杂一些的配置文件,不过是进行一起预备行为,用 shell 脚本的方式做些事情,比如 drizzle-nginx-module 这个第三方模块的配置文件如下:
ngx_feature_name=
ngx_feature_run=no
ngx_feature_incs="#include <libdrizzle/drizzle_client.h>"
ngx_feature_test="drizzle_version();"
if [ -n "$LIBDRIZZLE_INC" -o -n "$LIBDRIZZLE_LIB" ]; then
# explicit set libdrizzle lib path
ngx_feature="libdrizzle library in directories specified by LIBDRIZZLE_INC ($LIBDRIZZLE_INC) and LIBDRIZZLE_LIB ($LIBDRIZZLE_LIB)"
ngx_feature_path="$LIBDRIZZLE_INC"
if [ $NGX_RPATH = YES ]; then
ngx_feature_libs="-R$LIBDRIZZLE_LIB -L$LIBDRIZZLE_LIB -ldrizzle"
else
ngx_feature_libs="-L$LIBDRIZZLE_LIB -ldrizzle"
fi
. auto/feature
else
# auto-discovery
ngx_feature="libdrizzle library"
ngx_feature_path=
ngx_feature_libs="-ldrizzle"
. auto/feature
if [ $ngx_found = no ]; then
# FreeBSD, OpenBSD
ngx_feature="libdrizzle library in /usr/local/"
ngx_feature_path="/usr/local/include/libdrizzle-1.0"
if [ $NGX_RPATH = YES ]; then
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -ldrizzle"
else
ngx_feature_libs="-L/usr/local/lib -ldrizzle"
fi
. auto/feature
fi
if [ $ngx_found = no ]; then
# NetBSD
ngx_feature="libdrizzle library in /usr/pkg/"
ngx_feature_path="/usr/pkg/include/libdrizzle-1.0"
if [ $NGX_RPATH = YES ]; then
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -ldrizzle"
else
ngx_feature_libs="-L/usr/pkg/lib -ldrizzle"
fi
. auto/feature
fi
if [ $ngx_found = no ]; then
# MacPorts
ngx_feature="libdrizzle library in /opt/local/"
ngx_feature_path="/opt/local/include/libdrizzle-1.0"
if [ $NGX_RPATH = YES ]; then
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -ldrizzle"
else
ngx_feature_libs="-L/opt/local/lib -ldrizzle"
fi
. auto/feature
fi
fi
if [ $ngx_found = yes ]; then
CORE_INCS="$CORE_INCS $ngx_feature_path"
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
else
cat << END
$0: error: the ngx_drizzle addon requires the libdrizzle library.
END
exit 1
fi
ngx_addon_name=ngx_http_drizzle_module
HTTP_MODULES="$HTTP_MODULES ngx_http_drizzle_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/src/ngx_http_drizzle_module.c $ngx_addon_dir/src/ngx_http_drizzle_handler.c $ngx_addon_dir/src/ngx_http_drizzle_processor.c $ngx_addon_dir/src/ngx_http_drizzle_upstream.c $ngx_addon_dir/src/ngx_http_drizzle_util.c $ngx_addon_dir/src/ngx_http_drizzle_output.c $ngx_addon_dir/src/ngx_http_drizzle_keepalive.c $ngx_addon_dir/src/ngx_http_drizzle_quoting.c $ngx_addon_dir/src/ngx_http_drizzle_checker.c"
NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_addon_dir/src/ddebug.h $ngx_addon_dir/src/ngx_http_drizzle_module.h $ngx_addon_dir/src/ngx_http_drizzle_handler.h $ngx_addon_dir/src/ngx_http_drizzle_processor.h $ngx_addon_dir/src/ngx_http_drizzle_upstream.h $ngx_addon_dir/src/ngx_http_drizzle_util.h $ngx_addon_dir/src/ngx_http_drizzle_output.h $ngx_addon_dir/src/resty_dbd_stream.h $ngx_addon_dir/src/ngx_http_drizzle_keepalive.h $ngx_addon_dir/src/ngx_http_drizzle_quoting.h $ngx_addon_dir/src/ngx_http_drizzle_checker.h"
have=NGX_DRIZZLE_MODULE . auto/have
上文中我提到配置文件 config 是在./configure
的时候调用的,根据我前面写的系列文章《解剖Nginx·自动脚本篇》中的介绍,一些工具类脚本就可以用上了,比如auto/feature
,就如模块 drizzle-nginx-module 的配置文件中所使用的一样。还记得auto/feature
的功能吗?可以回顾下《解剖Nginx·自动脚本篇(4)工具型脚本系列》:
- 输出检查提示
- 初始化
ngx_found
- 初始化
ngx_have_feature
- 初始化
ngx_feature_inc_path
- 生成自动测试程序
- 编译自动测试程序
- 根据
ngx_feature_run
处理
- 删除
NGX_AUTOSET
测试程序可执行文件
-
转载请注明来自柳大的CSDN博客:Blog.CSDN.net/Poechant
-
分享到:
相关推荐
### Nginx模块开发入门详解 #### Nginx概述与市场地位 Nginx作为一款高性能的HTTP服务器和反向代理服务器,在全球范围内享有极高的声誉。根据权威机构W3Techs的数据,截至某一时间点,全球排名前100万的网站中,...
在预备知识部分,指南着重强调了C语言的基础技能,以及对nginx配置文件结构的理解是学习nginx模块开发的前提条件。下面我将详细解析nginx模块开发指南中的各个知识点。 预备知识部分,提到了对于C语言的熟练掌握,...
Nginx模块开发入门.Nginx模块开发入门.Nginx模块开发入门.Nginx模块开发入门.
4. **模块开发流程**:详述创建、编译、调试和部署Nginx模块的步骤,包括编写配置项、处理请求、生成响应等核心环节。 5. **案例分析**:通过实际的模块开发案例,演示如何将C++11和Boost库应用于实际问题,如日志...
深入理解Nginx模块开发与架构解析(完整版) pdf,nginx必备知识
深入理解Nginx模块开发及架构解析,深入理解Nginx模块开发及架构解析
书中首先通过介绍官方Nginx的基本用法和配置规则,帮助读者了解一般Nginx模块的用法,然后重点介绍了女口何开发HTTP模块(含HTTP过滤模块)来得到定制化的Nginx,其中包括开发—个功能复杂的模块所需要了解的各种知识...
- **配置项**:定义在Nginx配置文件中的模块特定参数。 - **上下文**:配置项可以存在于多个上下文中,如http、server、location等。 - **指令处理函数**:读取配置文件中的指令并执行相应操作。 - **请求对象**...
Nginx模块开发与架构详解
《深入理解Nginx模块开发与架构解析(第2版)》是一本专注于Nginx技术的专业书籍,针对Nginx的内部工作机制和模块开发进行了深入的探讨。本书旨在帮助读者掌握Nginx的核心概念、架构设计以及如何进行模块开发,从而...
Emiller的Nginx模块开发心得是一篇针对Nginx模块开发者的实用指南,由Evan Miller撰写,并由YaoWeibin翻译成中文。本文档主要介绍了如何为Nginx构建自定义模块,这对于扩展Nginx的功能至关重要。以下是详细的知识点...
此外,还会探讨如何使用Nginx的配置系统,允许用户通过配置文件灵活地控制模块行为。 书中的实例涵盖了从简单的日志记录到复杂的数据处理,读者可以跟随这些实例逐步熟悉Nginx模块开发的全过程。同时,书中还会讨论...
6. **缓存模块**:理解Nginx的缓存机制,并学习如何开发自定义缓存模块,提高网站性能。 7. **反向代理与负载均衡**:深入理解Nginx的反向代理功能和负载均衡策略,以及如何自定义这些行为。 8. **错误处理和日志...
深入理解Nginx模块开发与架构解析.深入理解Nginx模块开发与架构解析.
在本文中,我们将深入探讨如何配置Nginx以支持文件上传功能,特别是使用upload_module和upload_progress_module这两个第三方模块。Nginx是一个高效且灵活的HTTP服务器和反向代理,由Igor Sysoev开发,它支持模块化的...
《深入理解Nginx模块开发与架构解析》第二版是一本专为Nginx开发者和运维人员准备的深度学习资料。这本书旨在帮助读者全面掌握Nginx的核心原理、模块开发及系统架构,从而更好地利用Nginx进行高性能的Web服务构建。 ...
保存并退出配置文件,然后重启Nginx以应用更改: ```bash sudo systemctl restart nginx ``` 现在,你的CentOS 8系统上的Nginx 1.20.1已经配置好,可以提供HTTPS服务了。请注意,实际操作中可能需要根据你的具体...
《深入理解Nginx模块开发与架构解析》是一本针对Nginx技术的深度解析书籍,专注于探讨Nginx的内部机制、模块开发以及整体架构。Nginx是一款高性能的Web服务器,因其反向代理、负载均衡和静态文件处理能力而广受欢迎...
nginx模块开发基础入门,含有代码,亲测可行