Nginx服务器中的模块编写及相关内核源码初探

2019-10-17 19:58:56刘景俊

helloworld模块里面涉及最重要的数据就是ngx_module_t指针数组,这个指针数组包含了当前编译版本支持的所有模块,这个指针数组定义实在自动脚本生成的objs/ngx_modules.c中,如下:

 extern ngx_module_t ngx_core_module; 
 extern ngx_module_t ngx_errlog_module; 
 extern ngx_module_t ngx_conf_module; 
 extern ngx_module_t ngx_events_module; 
 extern ngx_module_t ngx_event_core_module; 
 extern ngx_module_t ngx_epoll_module; 
 extern ngx_module_t ngx_http_module; 
 extern ngx_module_t ngx_http_core_module; 
 extern ngx_module_t ngx_http_log_module; 
 extern ngx_module_t ngx_http_upstream_module; 
 extern ngx_module_t ngx_http_static_module; 
 extern ngx_module_t ngx_http_autoindex_module; 
 extern ngx_module_t ngx_http_index_module; 
 extern ngx_module_t ngx_http_auth_basic_module; 
 extern ngx_module_t ngx_http_access_module; 
 extern ngx_module_t ngx_http_limit_zone_module; 
 extern ngx_module_t ngx_http_limit_req_module; 
 extern ngx_module_t ngx_http_geo_module; 
 extern ngx_module_t ngx_http_map_module; 
 extern ngx_module_t ngx_http_split_clients_module; 
 extern ngx_module_t ngx_http_referer_module; 
 extern ngx_module_t ngx_http_rewrite_module; 
 extern ngx_module_t ngx_http_proxy_module; 
 extern ngx_module_t ngx_http_fastcgi_module; 
 extern ngx_module_t ngx_http_uwsgi_module; 
 extern ngx_module_t ngx_http_scgi_module; 
 extern ngx_module_t ngx_http_memcached_module; 
 extern ngx_module_t ngx_http_empty_gif_module; 
 extern ngx_module_t ngx_http_browser_module; 
 extern ngx_module_t ngx_http_upstream_ip_hash_module; 
 extern ngx_module_t ngx_http_cache_purge_module; 
 extern ngx_module_t ngx_http_write_filter_module; 
 extern ngx_module_t ngx_http_header_filter_module; 
 extern ngx_module_t ngx_http_chunked_filter_module; 
 extern ngx_module_t ngx_http_range_header_filter_module; 
 extern ngx_module_t ngx_http_gzip_filter_module; 
 extern ngx_module_t ngx_http_postpone_filter_module; 
 extern ngx_module_t ngx_http_ssi_filter_module; 
 extern ngx_module_t ngx_http_charset_filter_module; 
 extern ngx_module_t ngx_http_userid_filter_module; 
 extern ngx_module_t ngx_http_headers_filter_module; 
 extern ngx_module_t ngx_http_copy_filter_module; 
 extern ngx_module_t ngx_http_range_body_filter_module; 
 extern ngx_module_t ngx_http_not_modified_filter_module; 
  
 ngx_module_t *ngx_modules[] = { 
  &ngx_core_module, 
  &ngx_errlog_module, 
  &ngx_conf_module, 
  &ngx_events_module, 
  &ngx_event_core_module, 
  &ngx_epoll_module, 
  &ngx_http_module, 
  &ngx_http_core_module, 
  &ngx_http_log_module, 
  &ngx_http_upstream_module, 
  &ngx_http_static_module, 
  &ngx_http_autoindex_module, 
  &ngx_http_index_module, 
  &ngx_http_auth_basic_module, 
  &ngx_http_access_module, 
  &ngx_http_limit_zone_module, 
  &ngx_http_limit_req_module, 
  &ngx_http_geo_module, 
  &ngx_http_map_module, 
  &ngx_http_split_clients_module, 
  &ngx_http_referer_module, 
  &ngx_http_rewrite_module, 
  &ngx_http_proxy_module, 
  &ngx_http_fastcgi_module, 
  &ngx_http_uwsgi_module, 
  &ngx_http_scgi_module, 
  &ngx_http_memcached_module, 
  &ngx_http_empty_gif_module, 
  &ngx_http_browser_module, 
  &ngx_http_upstream_ip_hash_module, 
  &ngx_http_cache_purge_module, 
  &ngx_http_write_filter_module, 
  &ngx_http_header_filter_module, 
  &ngx_http_chunked_filter_module, 
  &ngx_http_range_header_filter_module, 
  &ngx_http_gzip_filter_module, 
  &ngx_http_postpone_filter_module, 
  &ngx_http_ssi_filter_module, 
  &ngx_http_charset_filter_module, 
  &ngx_http_userid_filter_module, 
  &ngx_http_headers_filter_module, 
  &ngx_http_copy_filter_module, 
  &ngx_http_range_body_filter_module, 
  &ngx_http_not_modified_filter_module, 
  NULL 
 };