Nginx的模块化设计

nginx采用模块化设计,这也是nginx的一大优点。
nginx分为5大模块 核心模块、标准http模块、可选http模块、邮件服务模块、第三方模块
其中核心模块和标准http模块默认安装。在objs目录中可以看到这些内容
[objs]$ ls
addon autoconf.err Makefile nginx nginx.8 ngx_auto_config.h ngx_auto_headers.h ngx_modules.c ngx_modules.o src
其中ngx_modules.c中使用extern来修饰这些扩展,截取部分内容如下
在扩展的命名上,一般使用ngx开始,module作为后缀,中间是功能描述,比如第一个就是核心模块
模块的源码放在src目录下,分成了core、event、http、misc、mail、os
核心模块:提供最基础的功能,如进程管理,日记记录,权限控制、配置解析,还有相应请求中的事件驱动机制、正则解析。
1 extern ngx_module_t ngx_core_module;
2 extern ngx_module_t ngx_errlog_module;
3 extern ngx_module_t ngx_conf_module;
4 extern ngx_module_t ngx_events_module;
5 extern ngx_module_t ngx_event_core_module;
6 extern ngx_module_t ngx_epoll_module;
7 extern ngx_module_t ngx_openssl_module;
8 extern ngx_module_t ngx_regex_module;
标准http模块:支持标准http处理请求
9 extern ngx_module_t ngx_http_module;
10 extern ngx_module_t ngx_http_core_module;http核心事物:端口、url、错误处理等
11 extern ngx_module_t ngx_http_log_module;定义log的存放
12 extern ngx_module_t ngx_http_upstream_module;负载均衡支持
13 extern ngx_module_t ngx_http_static_module;处理静态文件的请求
14 extern ngx_module_t ngx_http_autoindex_module; 处理以‘/’结尾的请求
15 extern ngx_module_t ngx_http_index_module;处理以‘/’结尾的请求,如果没有index页,转给ngx_http_autoindex_module来处理,如果开启了
16 extern ngx_module_t ngx_http_auth_basic_module;基于http的身份认证
17 extern ngx_module_t ngx_http_access_module;基于ip的访问控制
18 extern ngx_module_t ngx_http_limit_conn_module;;限制客户端的连接响应和处理速度
19 extern ngx_module_t ngx_http_limit_req_module;限制客户端的请求响应和处理速度
20 extern ngx_module_t ngx_http_realip_module;获取用户的ip
21 extern ngx_module_t ngx_http_geo_module;请求参数转化为键值对
22 extern ngx_module_t ngx_http_map_module;创建任意键值对变量
23 extern ngx_module_t ngx_http_split_clients_module;
24 extern ngx_module_t ngx_http_referer_module;锅里http请求头中referer为空的http请求
25 extern ngx_module_t ngx_http_rewrite_module;通过正则重定向请求
26 extern ngx_module_t ngx_http_ssl_module;对https支持
27 extern ngx_module_t ngx_http_proxy_module;支持代理服务
28 extern ngx_module_t ngx_http_fastcgi_module;对fastcgi支持
29 extern ngx_module_t ngx_http_uwsgi_module;
30 extern ngx_module_t ngx_http_scgi_module;对SCGI支持
31 extern ngx_module_t ngx_http_memcached_module;对memcache支持
32 extern ngx_module_t ngx_http_empty_gif_module;内存中创建1*1的gif图,方便快速调用
33 extern ngx_module_t ngx_http_browser_module;处理请求中带‘user-agent’的值
34 extern ngx_module_t ngx_http_upstream_hash_module;
35 extern ngx_module_t ngx_http_upstream_ip_hash_module;
36 extern ngx_module_t ngx_http_upstream_least_conn_module;
37 extern ngx_module_t ngx_http_upstream_keepalive_module;34-37负载均衡支持
可选http模块:支持一些特殊的http请求
邮件服务模块:支持邮件服务
第三方模块:可支持第三方定制的特定需求
白发渔樵

白发渔樵

发表评论

电子邮件地址不会被公开。 必填项已用*标注