8 Nginx模块开发

Nignx配置文件

Nginx配置文件分为4部分:main(全局配置),server(虚拟主机配置),upstream(主要为反向代理,负载均衡的相关配置),location(目录匹配设置)。

main配置影响其他所有配置;server会继承main的配置;location会继承server的配置;upstream不会继承指令。

 

Nginx模块概述

Nginx的模块不能和Apache一样动态添加,所有的模块都要预先编译进Nginx的二进制可执行文件中。Nginx模块有3种角色:

1.Handlers(处理模块)----------用于处理Http请求并输出内容

2.Filters(过滤模块) ----------用于过滤Handlers输出的内容

3.Load-balancers(负载均衡模块)---当多余一台的后端服务器供选择时,选择一台后端服务器并将Http请求转发到该服务器

 

Nginx模块的处理流程:

客户端发生Http请求到Nginx服务器 -> Nginx基于配置文件选择一个合适的处理模块 -> 负载均衡模块选择一个后端服务器 -> 处理模块并把输出缓冲放到第一个过滤模块上 -> 一直经过了N个过滤模块后 -> 把处理结果发送到客户端。

8 <wbr>Nginx模块开发

Nginx模块编写实践

我们现在创建一个输出"Hello World"的Nginx模块。

1.创建一个目录并进入:

Shell>mkdir -p /opt/myModule

Shell>cd /opt/myModule

2.创建Nginx的配置文件(名称为config):

Shell>vim /opt/myModule/config 

并输入以下内容

ngx_addon_name=ngx_http_hello_world_module

HTTP_MODULES="$HTTP_MODULES ngx_http_hello_world_module"

NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_hello_world_modlue.c"

CORE_LIBS="$CORE_LIBS -lpcre"

3.创建模块的C程序文件(名称格式为"ngx_http_模块名称_module.c"),在本例中是ngx_http_hello_world_module.c

Shell>vim /opt/myModule/ngx_http_hello_world_module.c

输入以下内容

8 <wbr>Nginx模块开发

8 <wbr>Nginx模块开发

 

4.下载Nginx源码包,并将Hello world模块编译到其中:

Shell>./configure --prefix=/usr/local/nginx --add-module=/opt/myModule

5.配置Nginx.conf,在server部分增加以下内容:

location = /hello

{

hello_world;

}

6.启用Nginx,浏览器访问http://localhost/hello,就可以看到编写的模块输出"hello world"字符串。

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(8 Nginx模块开发)