[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Minios-devel] [UNIKRAFT/LIB-NGINX] Provde NGINX modules as Kconfig options.



Signed-off-by: Alexander Jung <a.jung@xxxxxxxxxxx>
---
 Config.uk                 | 604 ++++++++++++++++++++++++++++-
 Makefile.uk               | 172 ++++++---
 include/ngx_auto_config.h | 184 ++++-----
 ngx_modules.c             | 945 +++++++++++++++++++++++++++++++++++++++++++---
 4 files changed, 1692 insertions(+), 213 deletions(-)

diff --git a/Config.uk b/Config.uk
index 927178d..bba702d 100644
--- a/Config.uk
+++ b/Config.uk
@@ -1,5 +1,5 @@
 menuconfig LIBNGINX
-       bool "libnginx - Nginx"
+       bool "libnginx - a HTTP and reverse proxy, a mail proxy, and a generic 
TCP/UDP proxy server"
        default n
        select LIBUKSCHEDCOOP
        select LIBSYSCALL_SHIM
@@ -24,7 +24,609 @@ menuconfig LIBNGINX
        select LIBPTHREAD_EMBEDDED
 
 if LIBNGINX
+
 config LIBNGINX_MAIN_FUNCTION
        bool "Provide main function"
        default n
+
+config LIBNGINX_DEBUG
+       bool "Build with debugging enabled"
+       default n
+
+menuconfig LIBNGINX_HTTP
+       bool "Enable HTTP and reverse proxy server"
+       default y
+
+if LIBNGINX_HTTP
+
+config LIBNGINX_HTTP_V2
+       bool "Enable ngx_http_v2_module and ngx_http_v2_filter_module"
+       default n
+       help
+               Provides support for HTTP/2.
+
+config LIBNGINX_HTTP_GZIP
+       bool "Enable ngx_http_gzip_module"
+       default y
+       select LIBZLIB
+       help
+               The ngx_http_gzip_module module is a filter that compresses 
responses using
+               the "gzip" method.
+
+config LIBNGINX_HTTP_GZIP_STATIC
+       bool "Enable ngx_http_gzip_static_module"
+       default n
+       select LIBNGINX_HTTP_GZIP
+       help
+               The ngx_http_gzip_static_module module allows sending 
precompressed files
+               with the ".gz" filename extension instead of regular files. 
+
+config LIBNGINX_HTTP_SSI
+       bool "Enable ngx_http_ssi_module"
+       default y
+       select LIBNGINX_HTTP_POSTPONE
+       help
+               The ngx_http_ssi_module module is a filter that processes SSI 
(Server Side
+               Includes) commands in responses passing through it. Currently, 
the list of
+               supported SSI commands is incomplete.  
+
+config LIBNGINX_HTTP_SLICE
+       bool "Enable ngx_http_slice_module"
+       default n
+       select LIBNGINX_HTTP_POSTPONE
+       help
+               The ngx_http_slice_module module is a filter that splits a 
request into 
+               subrequests, each returning a certain range of response. The 
filter 
+               provides more effective caching of big responses. 
+
+config LIBNGINX_HTTP_ADDITION
+       bool "Enable ngx_http_addition_module"
+       default n
+       select LIBNGINX_HTTP_POSTPONE
+       help
+               The ngx_http_addition_module module is a filter that adds text 
before and 
+               after a response. 
+
+config LIBNGINX_HTTP_POSTPONE
+       bool "Enable ngx_http_postpone_module"
+       default n
+       help
+               With the ngx_http_postpone_module it is possible that the 
transmission of 
+               client data will be postponed until nginx has at least size 
bytes of data 
+               to send.  A zero value disables postponing data transmission. 
+
+config LIBNGINX_HTTP_CHARSET
+       bool "Enable ngx_http_charset_module"
+       default y
+       help
+               The ngx_http_charset_module module adds the specified charset 
to the 
+               "Content-Type" response header field.  In addition, the module 
can convert 
+               data from one charset to another.
+
+config LIBNGINX_HTTP_XSLT
+       bool "Enable ngx_http_xslt_module"
+       default n
+       help
+               The ngx_http_xslt_module is a filter that transforms XML 
responses using 
+               one or more XSLT stylesheets.  
+
+config LIBNGINX_HTTP_IMAGE_FILTER
+       bool "Enable ngx_http_image_filter_module"
+       default n
+       help
+               The ngx_http_image_filter_module module is a filter that 
transforms images 
+               in JPEG, GIF, PNG, and WebP formats.  
+
+config LIBNGINX_HTTP_SUB
+       bool "Enable ngx_http_sub_module"
+       default n
+       help
+               The ngx_http_sub_module module is a filter that modifies a 
response by 
+               replacing one specified string by another. 
+
+config LIBNGINX_HTTP_GUNZIP
+       bool "Enable ngx_http_gunzip_filter_module"
+       default n
+       help
+               The ngx_http_gunzip_module module is a filter that decompresses 
responses 
+               with "Content-Encoding: gzip" for clients that do not support 
"gzip" 
+               encoding method.  The module will be useful when it is 
desirable to store 
+               data compressed to save space and reduce I/O costs. 
+
+config LIBNGINX_HTTP_USERID
+       bool "Enable ngx_http_userid_module"
+       default y
+       select LIBPOSIX_USER
+       help
+               The ngx_http_userid_module module sets cookies suitable for 
client 
+               identification.  Received and set cookies can be logged using 
the embedded 
+               variables $uid_got and $uid_set. This module is compatible with 
the mod_uid 
+               module for Apache. 
+
+config LIBNGINX_HTTP_DAV
+       bool "Enable ngx_http_dav_module"
+       default n
+       help
+               The ngx_http_dav_module module is intended for file management 
automation 
+               via the WebDAV protocol.  The module processes HTTP and WebDAV 
methods PUT, 
+               DELETE, MKCOL, COPY, and MOVE. 
+
+config LIBNGINX_HTTP_AUTOINDEX
+       bool "Enable ngx_http_autoindex_module"
+       default y
+       help
+               The ngx_http_autoindex_module module processes requests ending 
with the 
+               slash character ('/') and produces a directory listing.  
Usually a request 
+               is passed to the ngx_http_autoindex_module module when the 
+               ngx_http_index_module module cannot find an index file.
+
+config LIBNGINX_HTTP_RANDOM_INDEX
+       bool "Enable ngx_http_random_index_module"
+       default n
+       help
+               The ngx_http_random_index_module module processes requests 
ending with the 
+               slash character ('/') and picks a random file in a directory to 
serve as an 
+               index file.  The module is processed before the 
ngx_http_index_module 
+               module.
+
+config LIBNGINX_HTTP_MIRROR
+       bool "Enable ngx_http_mirror_module"
+       default y
+       help
+               The ngx_http_mirror_module module implements mirroring of an 
original 
+               request by creating background mirror subrequests.  Responses 
to mirror 
+               subrequests are ignored. 
+
+config LIBNGINX_HTTP_AUTH_REQUEST
+       bool "Enable ngx_http_auth_request_module"
+       default n
+       help
+               The ngx_http_auth_request_module module implements client 
authorization 
+               based on the result of a subrequest.  If the subrequest returns 
a 2xx 
+               response code, the access is allowed.  If it returns 401 or 
403, the access 
+               is denied with the corresponding error code.  Any other 
response code 
+               returned by the subrequest is considered an error.
+               
+               For the 401 error, the client also receives the 
"WWW-Authenticate" header 
+               from the subrequest response.
+               
+               The module may be combined with other access modules, such as 
+               ngx_http_access_module, ngx_http_auth_basic_module, and 
+               ngx_http_auth_jwt_module, via the satisfy directive. 
+
+config LIBNGINX_HTTP_AUTH_BASIC
+       bool "Enable ngx_http_auth_basic_module"
+       default n
+       select LIBCRYPTO
+       help
+               The ngx_http_auth_basic_module module allows limiting access to 
resources 
+               by validating the user name and password using the "HTTP Basic 
+               Authentication" protocol.
+                
+               Access can also be limited by address, by the result of 
subrequest, or by 
+               JWT.  Simultaneous limitation of access by address and by 
password is 
+               controlled by the satisfy directive. 
+
+config LIBNGINX_HTTP_ACCESS
+       bool "Enable ngx_http_access_module"
+       default y
+       help
+               The ngx_http_access_module module allows limiting access to 
certain client 
+               addresses.
+               
+               Access can also be limited by password, by the result of 
subrequest, or by 
+               JWT.  Simultaneous limitation of access by address and by 
password is 
+               controlled by the satisfy directive. 
+
+config LIBNGINX_HTTP_LIMIT_CONN
+       bool "Enable ngx_http_limit_conn_module"
+       default y
+       help
+               The ngx_http_limit_conn_module module is used to limit the 
number of 
+               connections per the defined key, in particular, the number of 
connections 
+               from a single IP address.
+               
+               Not all connections are counted. A connection is counted only 
if it has a 
+               request being processed by the server and the whole request 
header has 
+               already been read. 
+
+config LIBNGINX_HTTP_LIMIT_REQ
+       bool "Enable ngx_http_limit_req_module"
+       default y
+       help
+               The ngx_http_limit_req_module module is used to limit the 
request 
+               processing rate per a defined key, in particular, the 
processing rate of 
+               requests coming from a single IP address.  The limitation is 
done using the 
+               "leaky bucket" method. 
+
+config LIBNGINX_HTTP_REALIP
+       bool "Enable ngx_http_realip_module"
+       default n
+       help
+               The ngx_http_realip_module module is used to change the client 
address and 
+               optional port to those sent in the specified header field.
+
+config LIBNGINX_HTTP_STATUS
+       bool "Enable ngx_http_status_module"
+       default n
+       help
+               The ngx_http_status_module module provides access to various 
status 
+               information.
+
+config LIBNGINX_HTTP_GEO
+       bool "Enable ngx_http_geo_module"
+       default y
+       help
+               The ngx_http_geo_module module creates variables with values 
depending on 
+               the client IP address. 
+
+config LIBNGINX_HTTP_GEOIP
+       bool "Enable ngx_http_geoip_moduleHTTP geoip"
+       default n
+       help
+               The ngx_http_geoip_module module creates variables with values 
depending on 
+               the client IP address, using the precompiled MaxMind databases.
+               
+               When using the databases with IPv6 support, IPv4 addresses are 
looked up as 
+               IPv4-mapped IPv6 addresses. 
+
+config LIBNGINX_HTTP_MAP
+       bool "Enable ngx_http_map_module"
+       default y
+       help
+               The ngx_http_map_module module creates variables whose values 
depend on 
+               values of other variables. 
+
+config LIBNGINX_HTTP_SPLIT_CLIENTS
+       bool "Enable ngx_http_split_clients_module"
+       default y
+       help
+               The ngx_http_split_clients_module module creates variables 
suitable for A/B 
+               testing, also known as split testing. 
+
+config LIBNGINX_HTTP_REFERER
+       bool "Enable ngx_http_referer_module"
+       default y
+       help
+               The ngx_http_referer_module module is used to block access to a 
site for 
+               requests with invalid values in the "Referer" header field. It 
should be 
+               kept in mind that fabricating a request with an appropriate 
"Referer" field 
+               value is quite easy, and so the intended purpose of this module 
is not to 
+               block such requests thoroughly but to block the mass flow of 
requests sent 
+               by regular browsers. It should also be taken into consideration 
that 
+               regular browsers may not send the "Referer" field even for 
valid requests. 
+
+config LIBNGINX_HTTP_REWRITE
+       bool "Enable ngx_http_rewrite_module"
+       default n
+       select LIBPCRE
+       help
+               The ngx_http_rewrite_module module is used to change request 
URI using PCRE 
+               regular expressions, return redirects, and conditionally select 
+               configurations. 
+
+config LIBNGINX_HTTP_SSL
+       bool "Enable ngx_http_ssl_module"
+       default n
+       select LIBOPENSSL
+       select LIBSSL
+       help
+               The ngx_http_ssl_module module provides the necessary support 
for HTTPS.
+
+config LIBNGINX_HTTP_PROXY
+       bool "Enable ngx_http_proxy_module"
+       default y
+       help
+               The ngx_http_proxy_module module allows passing requests to 
another server.
+
+config LIBNGINX_HTTP_FASTCGI
+       bool "Enable ngx_http_fastcgi_module"
+       default y
+       help
+               The ngx_http_fastcgi_module module allows passing requests to a 
FastCGI 
+               server.
+
+config LIBNGINX_HTTP_UWSGI
+       bool "Enable ngx_http_uwsgi_module"
+       default y
+       help
+               The ngx_http_uwsgi_module module allows passing requests to a 
uwsgi server.
+
+config LIBNGINX_HTTP_SCGI
+       bool "Enable ngx_http_scgi_module"
+       default y
+       help
+               The ngx_http_scgi_module module allows passing requests to an 
SCGI server.
+
+config LIBNGINX_HTTP_GRPC
+       bool "Enable ngx_http_grpc_module"
+       default y
+       select LIBNGINX_HTTP_V2
+       help
+               The ngx_http_grpc_module module allows passing requests to a 
gRPC server.
+
+config LIBNGINX_HTTP_PERL
+       bool "Enable ngx_http_perl_module"
+       default n
+       select LIBPCRE
+       help
+               The ngx_http_perl_module module is used to implement location 
and variable 
+               handlers in Perl and insert Perl calls into SSI. 
+
+config LIBNGINX_HTTP_MEMCACHED
+       bool "Enable ngx_http_memcached_module"
+       default y
+       help
+               The ngx_http_memcached_module module is used to obtain 
responses from a 
+               memcached server.  The key is set in the $memcached_key 
variable.  A 
+               response should be put in memcached in advance by means 
external to nginx. 
+
+config LIBNGINX_HTTP_EMPTY_GIF
+       bool "Enable ngx_http_empty_gif_module"
+       default y
+       help
+               The ngx_http_empty_gif_module module emits single-pixel 
transparent GIF. 
+
+config LIBNGINX_HTTP_BROWSER
+       bool "Enable ngx_http_browser_module"
+       default y
+       help
+               The ngx_http_browser_module module creates variables whose 
values depend on 
+               the value of the "User-Agent" request header field:
+
+                       $modern_browser:  equals the value set by the 
modern_browser_value 
+                               directive, if a browser was identified as 
modern;
+
+                       $ancient_browser: equals the value set by the 
ancient_browser_value 
+                               directive, if a browser was identified as 
ancient;
+
+                       $msie: equals "1" if a browser was identified as MSIE 
of any version.  
+
+config LIBNGINX_HTTP_SECURE_LINK
+       bool "Enable ngx_http_secure_link_module"
+       default n
+       help
+               The ngx_http_secure_link_module module is used to check 
authenticity of 
+               requested links, protect resources from unauthorized  access, 
and limit 
+               link lifetime.
+                
+               The authenticity of a requested link is verified by comparing 
the checksum 
+               value passed in a request with the value computed for the 
request.  If a 
+               link has a limited lifetime and the time has expired, the link 
is 
+               considered outdated. The status of these checks is made 
available in the 
+               $secure_link variable.
+               
+               The module provides two alternative operation modes.  The first 
mode is 
+               enabled by the secure_link_secret directive and is used to 
check 
+               authenticity of requested links as well as protect resources 
from 
+               unauthorized access.  The second mode is enabled by the 
secure_link and 
+               secure_link_md5 directives and is also used to limit lifetime 
of links. 
+
+config LIBNGINX_HTTP_DEGRADATION
+       bool "Enable ngx_http_degradation_module"
+       default n
+       help
+               The ngx_http_degradation_module orders Nginx to serve a 
particular error 
+               page when low memory conditions are met.
+
+config LIBNGINX_HTTP_FLV
+       bool "Enable ngx_http_flv_module"
+       default n
+       help
+               The ngx_http_flv_module module provides pseudo-streaming 
server-side 
+               support for Flash Video (FLV) files.
+               
+               It handles requests with the start argument in the request 
URI's query 
+               string specially, by sending back the contents of a file 
starting from the 
+               requested byte offset and with the prepended FLV header.
+
+config LIBNGINX_HTTP_UPSTREAM
+       bool "Enable ngx_http_upstream_module"
+       default y
+       help
+               The ngx_http_upstream_module module is used to define groups of 
servers 
+               that can be referenced by the proxy_pass, fastcgi_pass, 
uwsgi_pass, 
+               scgi_pass, memcached_pass, and grpc_pass directives. 
+
+config LIBNGINX_HTTP_UPSTREAM_HASH
+       bool "Enable ngx_http_upstream_hash_module"
+       select LIBNGINX_HTTP_UPSTREAM
+       default y
+       help
+               Specifies a load balancing method for a server group where the 
+               client-server mapping is based on the hashed key value.
+
+config LIBNGINX_HTTP_UPSTREAM_IP_HASH
+       bool "Enable ngx_http_upstream_ip_hash_module"
+       select LIBNGINX_HTTP_UPSTREAM
+       default y
+       help
+               Specifies that a group should use a load balancing method where 
requests 
+               are distributed between servers based on client IP addresses.
+
+config LIBNGINX_HTTP_UPSTREAM_LEAST_CONN
+       bool "Enable ngx_http_upstream_least_conn_module"
+       select LIBNGINX_HTTP_UPSTREAM
+       default y
+       help
+               Specifies that a group should use a load balancing method where 
a request 
+               is passed to the server with the least number of active 
connections, taking 
+               into account weights of servers.  If there are several such 
servers, they 
+               are tried in turn using a weighted round-robin balancing 
method. 
+
+config LIBNGINX_HTTP_UPSTREAM_RANDOM
+       bool "Enable ngx_http_upstream_random_module"
+       select LIBNGINX_HTTP_UPSTREAM
+       default y
+       help
+               Specifies that a group should use a load balancing method where 
a request 
+               is passed to a randomly selected server, taking into account 
weights of 
+               servers. 
+
+config LIBNGINX_HTTP_UPSTREAM_KEEPALIVE
+       bool "Enable ngx_http_upstream_keepalive_module"
+       select LIBNGINX_HTTP_UPSTREAM
+       default y
+       help
+               Activates the cache for connections to upstream servers.
+
+config LIBNGINX_HTTP_UPSTREAM_ZONE
+       bool "Enable ngx_http_upstream_zone_module"
+       select LIBNGINX_HTTP_UPSTREAM
+       default y
+       help
+               Defines the name and size of the shared memory zone that keeps 
the group's 
+               configuration and run-time state that are shared between worker 
processes.
+
+config LIBNGINX_HTTP_STUB_STATUS
+       bool "Enable ngx_http_stub_status_module"
+       default y
+       help
+               The ngx_http_stub_status_module module provides access to basic 
status 
+               information.
+
+endif
+
+menuconfig LIBNGINX_MAIL
+       bool "Enable mail proxy server"
+       default n
+
+if LIBNGINX_MAIL
+
+config LIBNGINX_MAIL_SSL
+       bool "Enable ngx_mail_ssl_module"
+       default n
+       select LIBOPENSSL
+       select LIBSSL
+       help
+               The ngx_mail_ssl_module module provides the necessary support 
for a mail 
+               proxy server to work with the SSL/TLS protocol. 
+
+config LIBNGINX_MAIL_POP3
+       bool "Enable ngx_mail_pop3_module"
+       default y
+       help
+               Sets permitted methods of authentication for POP3 clients.
+
+config LIBNGINX_MAIL_IMAP
+       bool "Enable ngx_mail_imap_module"
+       default y
+       help
+               Sets permitted methods of authentication for IMAP clients.
+
+config LIBNGINX_MAIL_SMTP
+       bool "Enable ngx_mail_smtp_module"
+       default y
+       help
+               Sets permitted methods of SASL authentication for SMTP clients.
+
+endif
+
+menuconfig LIBNGINX_STREAM
+       bool "Enable generic TCP/UDP proxy server"
+       default n
+
+if LIBNGINX_STREAM
+
+config LIBNGINX_STREAM_SSL
+       bool "Enable ngx_stream_ssl_module"
+       default n
+       select LIBOPENSSL
+       select LIBSSL
+       select LIBUKSWRAND
+       select LIBUKSWRAND_DEVFS
+       help
+               The ngx_stream_ssl_module module provides the necessary support 
for a 
+               stream proxy server to work with the SSL/TLS protocol.
+
+config LIBNGINX_STREAM_REALIP
+       bool "Enable ngx_stream_realip_module"
+       default n
+       help
+               The ngx_stream_realip_module module is used to change the 
client address 
+               and port to the ones sent in the PROXY protocol header.  The 
PROXY protocol 
+               must be previously enabled by setting the proxy_protocol 
parameter in the 
+               listen directive. 
+
+config LIBNGINX_STREAM_ACCESS
+       bool "Enable ngx_stream_access_module"
+       default y
+       help
+               The ngx_stream_access_module module allows limiting access to 
certain 
+               client addresses.
+
+config LIBNGINX_STREAM_GEO
+       bool "Enable ngx_stream_geo_module"
+       default y
+       help
+               The ngx_stream_geo_module module creates variables with values 
depending on 
+               the client IP address. 
+
+config LIBNGINX_STREAM_GEOIP
+       bool "Enable ngx_stream_geoip_module"
+       default n
+       help
+               The ngx_stream_geoip_module module creates variables with 
values depending 
+               on the client IP address, using the precompiled MaxMind 
databases.
+               
+               When using the databases with IPv6 support, IPv4 addresses are 
looked up as 
+               IPv4-mapped IPv6 addresses.
+
+config LIBNGINX_STREAM_SPLIT_CLIENTS
+       bool "Enable ngx_stream_split_clients_module"
+       default y
+       help
+               The ngx_stream_split_clients_module module creates variables 
suitable for A/
+               B testing, also known as split testing. 
+
+config LIBNGINX_STREAM_RETURN
+       bool "Enable ngx_stream_return_module"
+       default y
+       help
+               The ngx_stream_return_module module allows sending a specified 
value to the 
+               client and then closing the connection. 
+
+config LIBNGINX_STREAM_UPSTREAM
+       bool "Enable ngx_stream_upstream_module"
+       default y
+       help
+               The ngx_stream_upstream_module module is used to define groups 
of servers 
+               that can be referenced by the proxy_pass directive. 
+
+config LIBNGINX_STREAM_UPSTREAM_LEAST_CONN
+       bool "Enable ngx_stream_upstream_least_conn_module"
+       select LIBNGINX_STREAM_UPSTREAM
+       default y
+       help
+               Specifies that a group should use a load balancing method where 
a 
+               connection is passed to the server with the least number of 
active 
+               connections, taking into account weights of servers.  If there 
are several 
+               such servers, they are tried in turn using a weighted 
round-robin balancing 
+               method. 
+
+config LIBNGINX_STREAM_UPSTREAM_RANDOM
+       bool "Enable ngx_stream_upstream_random_module"
+       select LIBNGINX_STREAM_UPSTREAM
+       default y
+       help
+               Specifies that a group should use a load balancing method where 
a 
+               connection is passed to a randomly selected server, taking into 
account 
+               weights of servers. 
+
+config LIBNGINX_STREAM_UPSTREAM_ZONE
+       bool "Enable ngx_stream_upstream_zone_module"
+       select LIBNGINX_STREAM_UPSTREAM
+       default y
+       help
+               Defines the name and size of the shared memory zone that keeps 
the group's 
+               configuration and run-time state that are shared between worker 
processes.
+
+config LIBNGINX_STREAM_SSL_PREREAD
+       bool "Enable ngx_stream_ssl_preread_module"
+       default n
+       help
+               The ngx_stream_ssl_preread_module module allows extracting 
information from 
+               the ClientHello message without terminating SSL/TLS, for 
example, the 
+               server name requested through SNI or protocols advertised in 
ALPN.
+endif
 endif
diff --git a/Makefile.uk b/Makefile.uk
index 839a7f8..812bdcd 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -3,8 +3,10 @@
 #  Nginx Makefile.uk
 #
 #  Authors: Mihai Pogonaru <pogonarumihai@xxxxxxxxx>
+#           Alexander Jung <alexander.jung@xxxxxxxxx>
 #
 #  Copyright (c) 2019, University Politehnica of Bucharest. All rights 
reserved.
+#                2020, NEC Europe Ltd., NEC Corporation. All rights reserved.
 #
 #  Redistribution and use in source and binary forms, with or without
 #  modification, are permitted provided that the following conditions
@@ -67,13 +69,13 @@ CINCLUDES-$(CONFIG_LIBNGINX) += -I$(LIBNGINX_BASE)/include
 LIBNGINX_CINCLUDES-$(CONFIG_LIBNGINX) += -I$(LIBNGINX_SRC)/core
 LIBNGINX_CINCLUDES-$(CONFIG_LIBNGINX) += -I$(LIBNGINX_SRC)/event
 LIBNGINX_CINCLUDES-$(CONFIG_LIBNGINX) += -I$(LIBNGINX_SRC)/event/modules
-LIBNGINX_CINCLUDES-$(CONFIG_LIBNGINX) += -I$(LIBNGINX_SRC)/http
-LIBNGINX_CINCLUDES-$(CONFIG_LIBNGINX) += -I$(LIBNGINX_SRC)/http/modules
-LIBNGINX_CINCLUDES-$(CONFIG_LIBNGINX) += -I$(LIBNGINX_SRC)/http/modules/perl
-LIBNGINX_CINCLUDES-$(CONFIG_LIBNGINX) += -I$(LIBNGINX_SRC)/http/v2
-LIBNGINX_CINCLUDES-$(CONFIG_LIBNGINX) += -I$(LIBNGINX_SRC)/mail
+LIBNGINX_CINCLUDES-$(CONFIG_LIBNGINX_HTTP) += -I$(LIBNGINX_SRC)/http
+LIBNGINX_CINCLUDES-$(CONFIG_LIBNGINX_HTTP) += -I$(LIBNGINX_SRC)/http/modules
+LIBNGINX_CINCLUDES-$(CONFIG_LIBNGINX_HTTP) += 
-I$(LIBNGINX_SRC)/http/modules/perl
+LIBNGINX_CINCLUDES-$(CONFIG_LIBNGINX_HTTP_V2) += -I$(LIBNGINX_SRC)/http/v2
+LIBNGINX_CINCLUDES-$(CONFIG_LIBNGINX_MAIL) += -I$(LIBNGINX_SRC)/mail
 LIBNGINX_CINCLUDES-$(CONFIG_LIBNGINX) += -I$(LIBNGINX_SRC)/os/unix
-LIBNGINX_CINCLUDES-$(CONFIG_LIBNGINX) += -I$(LIBNGINX_SRC)/stream
+LIBNGINX_CINCLUDES-$(CONFIG_LIBNGINX_STREAM) += -I$(LIBNGINX_SRC)/stream
 
 
################################################################################
 # Flags
@@ -130,6 +132,7 @@ LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/core/ngx_spinlock.c
 LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/core/ngx_string.c
 LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/core/ngx_syslog.c
 LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/core/ngx_times.c
+LIBNGINX_SRCS-$(CONFIG_LIBPCRE) += $(LIBNGINX_SRC)/core/ngx_regex.c
 LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/event/modules/ngx_select_module.c
 LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/event/ngx_event_accept.c
 LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/event/ngx_event.c
@@ -138,20 +141,8 @@ LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/event/ngx_event_pipe.c
 LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/event/ngx_event_posted.c
 LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/event/ngx_event_timer.c
 LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/event/ngx_event_udp.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/ngx_http.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/ngx_http_copy_filter_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/ngx_http_core_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/ngx_http_header_filter_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/ngx_http_parse.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/ngx_http_postpone_filter_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/ngx_http_request_body.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/ngx_http_request.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/ngx_http_script.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/ngx_http_special_response.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/ngx_http_upstream.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/ngx_http_upstream_round_robin.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/ngx_http_variables.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/ngx_http_write_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBSSL) += $(LIBNGINX_SRC)/event/ngx_event_openssl.c
+LIBNGINX_SRCS-$(CONFIG_LIBSSL) += 
$(LIBNGINX_SRC)/event/ngx_event_openssl_stapling.c
 LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/os/unix/ngx_alloc.c
 LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/os/unix/ngx_channel.c
 LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/os/unix/ngx_daemon.c
@@ -176,37 +167,110 @@ LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/os/unix/ngx_udp_send.c
 LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/os/unix/ngx_udp_sendmsg_chain.c
 LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/os/unix/ngx_user.c
 LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/os/unix/ngx_writev_chain.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_access_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_autoindex_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_browser_module.c
-LIBNGINX_SRCS-y += 
$(LIBNGINX_SRC)/http/modules/ngx_http_charset_filter_module.c
-LIBNGINX_SRCS-y += 
$(LIBNGINX_SRC)/http/modules/ngx_http_chunked_filter_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_empty_gif_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_fastcgi_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_geo_module.c
-LIBNGINX_SRCS-y += 
$(LIBNGINX_SRC)/http/modules/ngx_http_headers_filter_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_index_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_limit_conn_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_limit_req_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_log_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_map_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_memcached_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_mirror_module.c
-LIBNGINX_SRCS-y += 
$(LIBNGINX_SRC)/http/modules/ngx_http_not_modified_filter_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_proxy_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_range_filter_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_referer_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_scgi_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_split_clients_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_ssi_filter_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_static_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_sub_filter_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_try_files_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_upstream_hash_module.c
-LIBNGINX_SRCS-y += 
$(LIBNGINX_SRC)/http/modules/ngx_http_upstream_ip_hash_module.c
-LIBNGINX_SRCS-y += 
$(LIBNGINX_SRC)/http/modules/ngx_http_upstream_keepalive_module.c
-LIBNGINX_SRCS-y += 
$(LIBNGINX_SRC)/http/modules/ngx_http_upstream_least_conn_module.c
-LIBNGINX_SRCS-y += 
$(LIBNGINX_SRC)/http/modules/ngx_http_upstream_random_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_upstream_zone_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_userid_filter_module.c
-LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_uwsgi_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += $(LIBNGINX_SRC)/http/ngx_http.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += 
$(LIBNGINX_SRC)/http/ngx_http_core_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += $(LIBNGINX_SRC)/http/ngx_http_parse.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += 
$(LIBNGINX_SRC)/http/ngx_http_request_body.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += 
$(LIBNGINX_SRC)/http/ngx_http_request.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += $(LIBNGINX_SRC)/http/ngx_http_script.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += 
$(LIBNGINX_SRC)/http/ngx_http_special_response.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += 
$(LIBNGINX_SRC)/http/ngx_http_upstream.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += 
$(LIBNGINX_SRC)/http/ngx_http_upstream_round_robin.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += 
$(LIBNGINX_SRC)/http/ngx_http_variables.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += 
$(LIBNGINX_SRC)/http/ngx_http_write_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_log_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += 
$(LIBNGINX_SRC)/http/ngx_http_header_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_chunked_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_V2) += 
$(LIBNGINX_SRC)/http/v2/ngx_http_v2_encode.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_V2) += 
$(LIBNGINX_SRC)/http/v2/ngx_http_v2_huff_decode.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_V2) += 
$(LIBNGINX_SRC)/http/v2/ngx_http_v2_huff_encode.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_V2) += 
$(LIBNGINX_SRC)/http/v2/ngx_http_v2_table.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_V2) += 
$(LIBNGINX_SRC)/http/v2/ngx_http_v2.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_V2) += 
$(LIBNGINX_SRC)/http/v2/ngx_http_v2_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_range_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_GZIP) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_gzip_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_POSTPONE) += 
$(LIBNGINX_SRC)/http/ngx_http_postpone_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_SSI) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_ssi_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_CHARSET) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_charset_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_XSLT) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_xslt_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_IMAGE_FILTER) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_image_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_SUB) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_sub_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_ADDITION) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_addition_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_GUNZIP) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_gunzip_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_USERID) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_userid_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_headers_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += 
$(LIBNGINX_SRC)/http/ngx_http_copy_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_not_modified_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_SLICE) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_slice_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_V2) += 
$(LIBNGINX_SRC)/http/v2/ngx_http_v2_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_static_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_GZIP_STATIC) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_gzip_static_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_DAV) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_dav_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_AUTOINDEX) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_autoindex_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_index_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_RANDOM_INDEX) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_random_index_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_MIRROR) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_mirror_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_try_files_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_AUTH_REQUEST) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_auth_request_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_AUTH_BASIC) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_auth_basic_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_ACCESS) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_access_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_LIMIT_CONN) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_limit_conn_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_LIMIT_REQ) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_limit_req_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_REALIP) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_limit_req_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_STATUS) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_status_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_GEO) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_geo_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_GEOIP) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_geoip_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_MAP) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_map_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_SPLIT_CLENTS) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_split_clients_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_REFERER) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_referer_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_REWRITE) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_rewrite_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_SSL) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_ssl_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_PROXY) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_proxy_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_FASTCGI) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_fastcgi_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_UWSGI) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_uwsgi_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_SCGI) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_scgi_module.c
+ifeq ($(CONFIG_LIBNGINX_HTTP_GRPC)$(CONFIG_LIBNGINX_HTTP_V2),yy)
+LIBNGINX_SRCS-y += $(LIBNGINX_SRC)/http/modules/ngx_http_grpc_module.c
+endif
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_PERL) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_perl_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_MEMCACHED) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_memcached_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_EMPTY_GIF) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_empty_gif_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_BROWSER) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_browser_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_SECURE_LINK) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_secure_link_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_DEGRADATION) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_degradation_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_FLV) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_flv_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_MP4) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_mp4_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_UPSTREAM_HASH) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_upstream_hash_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_UPSTREAM_IP_HASH) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_upstream_ip_hash_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_UPSTREAM_LEAST_CONN) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_upstream_least_conn_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_UPSTREAM_RANDOM) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_upstream_random_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_UPSTREAM_KEEPALIVE) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_upstream_keepalive_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_UPSTREAM_ZONE) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_upstream_zone_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_HTTP_STUB_STATUS) += 
$(LIBNGINX_SRC)/http/modules/ngx_http_stub_status_module.c
+
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_MAIL) += $(LIBNGINX_SRC)/mail/ngx_mail.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_MAIL) += 
$(LIBNGINX_SRC)/mail/ngx_mail_core_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_MAIL_SSL) += 
$(LIBNGINX_SRC)/mail/ngx_mail_ssl_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_MAIL_POP3) += 
$(LIBNGINX_SRC)/mail/ngx_mail_pop3_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_MAIL_IMAP) += 
$(LIBNGINX_SRC)/mail/ngx_mail_imap_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_MAIL_SMTP) += 
$(LIBNGINX_SRC)/mail/ngx_mail_smtp_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_MAIL) += 
$(LIBNGINX_SRC)/mail/ngx_mail_auth_http_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_MAIL) += 
$(LIBNGINX_SRC)/mail/ngx_mail_proxy_module.c
+
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_STREAM) += $(LIBNGINX_SRC)/stream/ngx_stream.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_STREAM) += 
$(LIBNGINX_SRC)/stream/ngx_stream_core_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_STREAM) += 
$(LIBNGINX_SRC)/stream/ngx_stream_log_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_STREAM) += 
$(LIBNGINX_SRC)/stream/ngx_stream_proxy_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_STREAM) += 
$(LIBNGINX_SRC)/stream/ngx_stream_upstream_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_STREAM) += 
$(LIBNGINX_SRC)/stream/ngx_stream_write_filter_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_STREAM_SSL) += 
$(LIBNGINX_SRC)/stream/ngx_stream_ssl_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_STREAM_REALIP) += 
$(LIBNGINX_SRC)/stream/ngx_stream_realip_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_STREAM_ACCESS) += 
$(LIBNGINX_SRC)/stream/ngx_stream_access_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_STREAM_GEO) += 
$(LIBNGINX_SRC)/stream/ngx_stream_geo_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_STREAM_GEOIP) += 
$(LIBNGINX_SRC)/stream/ngx_stream_geoip_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_STREAM_SPLIT_CLIENTS) += 
$(LIBNGINX_SRC)/stream/ngx_stream_split_clients_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_STREAM_RETURN) += 
$(LIBNGINX_SRC)/stream/ngx_stream_return_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_STREAM_UPSTREAM_LEAST_CONN) += 
$(LIBNGINX_SRC)/stream/ngx_stream_upstream_least_conn_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_STREAM_UPSTREAM_RANDOM) += 
$(LIBNGINX_SRC)/stream/ngx_stream_upstream_random_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_STREAM_UPSTREAM_ZONE) += 
$(LIBNGINX_SRC)/stream/ngx_stream_upstream_zone_module.c
+LIBNGINX_SRCS-$(CONFIG_LIBNGINX_STREAM_SSL_PREREAD) += 
$(LIBNGINX_SRC)/stream/ngx_stream_ssl_preread_module.c
diff --git a/include/ngx_auto_config.h b/include/ngx_auto_config.h
index d85b8a6..564dc02 100644
--- a/include/ngx_auto_config.h
+++ b/include/ngx_auto_config.h
@@ -1,493 +1,475 @@
-#define NGX_CONFIGURE " --prefix=/nginx --with-http_sub_module 
--with-select_module --without-http_gzip_module --without-pcre 
--without-http_rewrite_module --without-http_auth_basic_module 
--without-http-cache"
+#define NGX_CONFIGURE "\
+  --prefix=/nginx \
+  --with-http_sub_module \
+  --with-select_module \
+  --without-http_gzip_module \
+  --without-pcre \
+  --without-http_rewrite_module \
+  --without-http_auth_basic_module \
+  --without-http-cache"
+
+#ifndef NGX_DEBUG
+#ifdef CONFIG_LIBNGINX_DEBUG
+#define NGX_DEBUG  1
+#else
+#define NGX_DEBUG  0
+#endif
+#endif
 
 #ifndef NGX_COMPILER
 #define NGX_COMPILER  "gcc 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) "
 #endif
 
-
 #ifndef NGX_HAVE_GCC_ATOMIC
 #define NGX_HAVE_GCC_ATOMIC  1
 #endif
 
-
 #ifndef NGX_HAVE_C99_VARIADIC_MACROS
 #define NGX_HAVE_C99_VARIADIC_MACROS  1
 #endif
 
-
 #ifndef NGX_HAVE_GCC_VARIADIC_MACROS
 #define NGX_HAVE_GCC_VARIADIC_MACROS  1
 #endif
 
-
 #ifndef NGX_HAVE_GCC_BSWAP64
 #define NGX_HAVE_GCC_BSWAP64  1
 #endif
 
-
 #ifndef NGX_HAVE_EPOLL
 #define NGX_HAVE_EPOLL  0
 #endif
 
-
 #ifndef NGX_HAVE_CLEAR_EVENT
 #define NGX_HAVE_CLEAR_EVENT  1
 #endif
 
-
 #ifndef NGX_HAVE_EPOLLRDHUP
 #define NGX_HAVE_EPOLLRDHUP  0
 #endif
 
-
 #ifndef NGX_HAVE_EPOLLEXCLUSIVE
 #define NGX_HAVE_EPOLLEXCLUSIVE  0
 #endif
 
-
 #ifndef NGX_HAVE_O_PATH
 #define NGX_HAVE_O_PATH  0
 #endif
 
-
 #ifndef NGX_HAVE_SENDFILE
 #define NGX_HAVE_SENDFILE  1
 #endif
 
-
 #ifndef NGX_HAVE_SENDFILE64
 #define NGX_HAVE_SENDFILE64  1
 #endif
 
-
 #ifndef NGX_HAVE_PR_SET_DUMPABLE
 #define NGX_HAVE_PR_SET_DUMPABLE  1
 #endif
 
-
 #ifndef NGX_HAVE_PR_SET_KEEPCAPS
 #define NGX_HAVE_PR_SET_KEEPCAPS  1
 #endif
 
-
 #ifndef NGX_HAVE_CAPABILITIES
 #define NGX_HAVE_CAPABILITIES  0
 #endif
 
-
 #ifndef NGX_HAVE_GNU_CRYPT_R
 #define NGX_HAVE_GNU_CRYPT_R  1
 #endif
 
-
 #ifndef NGX_HAVE_NONALIGNED
 #define NGX_HAVE_NONALIGNED  1
 #endif
 
-
 #ifndef NGX_CPU_CACHE_LINE
 #define NGX_CPU_CACHE_LINE  64
 #endif
 
-
 #define NGX_KQUEUE_UDATA_T  (void *)
 
-
 #ifndef NGX_HAVE_POSIX_FADVISE
 #define NGX_HAVE_POSIX_FADVISE  0
 #endif
 
-
 #ifndef NGX_HAVE_O_DIRECT
 #define NGX_HAVE_O_DIRECT  0
 #endif
 
-
 #ifndef NGX_HAVE_ALIGNED_DIRECTIO
 #define NGX_HAVE_ALIGNED_DIRECTIO  0
 #endif
 
-
 #ifndef NGX_HAVE_STATFS
 #define NGX_HAVE_STATFS  1
 #endif
 
-
 #ifndef NGX_HAVE_STATVFS
 #define NGX_HAVE_STATVFS  1
 #endif
 
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_RANDOM
+#ifndef NGX_STAT_STUB
+#define NGX_STAT_STUB  1
+#endif
+#endif
 
 #ifndef NGX_HAVE_DLOPEN
 #define NGX_HAVE_DLOPEN  1
 #endif
 
-
 #ifndef NGX_HAVE_SCHED_YIELD
 #define NGX_HAVE_SCHED_YIELD  1
 #endif
 
-
 #ifndef NGX_HAVE_SCHED_SETAFFINITY
 #define NGX_HAVE_SCHED_SETAFFINITY  0
 #endif
 
-
 #ifndef NGX_HAVE_REUSEPORT
 #define NGX_HAVE_REUSEPORT  1
 #endif
 
-
 #ifndef NGX_HAVE_TRANSPARENT_PROXY
 #define NGX_HAVE_TRANSPARENT_PROXY  1
 #endif
 
-
 #ifndef NGX_HAVE_IP_BIND_ADDRESS_NO_PORT
 #define NGX_HAVE_IP_BIND_ADDRESS_NO_PORT  0
 #endif
 
-
 #ifndef NGX_HAVE_IP_PKTINFO
 #define NGX_HAVE_IP_PKTINFO  0
 #endif
 
-
 #ifndef NGX_HAVE_IPV6_RECVPKTINFO
 #define NGX_HAVE_IPV6_RECVPKTINFO  0
 #endif
 
-
 #ifndef NGX_HAVE_DEFERRED_ACCEPT
 #define NGX_HAVE_DEFERRED_ACCEPT  1
 #endif
 
-
 #ifndef NGX_HAVE_KEEPALIVE_TUNABLE
 #define NGX_HAVE_KEEPALIVE_TUNABLE  1
 #endif
 
-
 #ifndef NGX_HAVE_TCP_FASTOPEN
 #define NGX_HAVE_TCP_FASTOPEN  0
 #endif
 
-
 #ifndef NGX_HAVE_TCP_INFO
 #define NGX_HAVE_TCP_INFO  0
 #endif
 
-
 #ifndef NGX_HAVE_ACCEPT4
 #define NGX_HAVE_ACCEPT4  0
 #endif
 
-
 #ifndef NGX_HAVE_EVENTFD
 #define NGX_HAVE_EVENTFD  0
 #endif
 
-
 #ifndef NGX_HAVE_SYS_EVENTFD_H
 #define NGX_HAVE_SYS_EVENTFD_H  1
 #endif
 
-
 #ifndef NGX_HAVE_UNIX_DOMAIN
 #define NGX_HAVE_UNIX_DOMAIN  0
 #endif
 
-
 #ifndef NGX_PTR_SIZE
 #define NGX_PTR_SIZE  8
 #endif
 
-
 #ifndef NGX_SIG_ATOMIC_T_SIZE
 #define NGX_SIG_ATOMIC_T_SIZE  4
 #endif
 
-
 #ifndef NGX_HAVE_LITTLE_ENDIAN
 #define NGX_HAVE_LITTLE_ENDIAN  1
 #endif
 
-
 #ifndef NGX_MAX_SIZE_T_VALUE
 #define NGX_MAX_SIZE_T_VALUE  9223372036854775807LL
 #endif
 
-
 #ifndef NGX_SIZE_T_LEN
 #define NGX_SIZE_T_LEN  (sizeof("-9223372036854775808") - 1)
 #endif
 
-
 #ifndef NGX_MAX_OFF_T_VALUE
 #define NGX_MAX_OFF_T_VALUE  9223372036854775807LL
 #endif
 
-
 #ifndef NGX_OFF_T_LEN
 #define NGX_OFF_T_LEN  (sizeof("-9223372036854775808") - 1)
 #endif
 
-
 #ifndef NGX_TIME_T_SIZE
 #define NGX_TIME_T_SIZE  8
 #endif
 
-
 #ifndef NGX_TIME_T_LEN
 #define NGX_TIME_T_LEN  (sizeof("-9223372036854775808") - 1)
 #endif
 
-
 #ifndef NGX_MAX_TIME_T_VALUE
 #define NGX_MAX_TIME_T_VALUE  9223372036854775807LL
 #endif
 
-
 #ifndef NGX_HAVE_INET6
 #define NGX_HAVE_INET6  0
 #endif
 
-
 #ifndef NGX_HAVE_PREAD
 #define NGX_HAVE_PREAD  1
 #endif
 
-
 #ifndef NGX_HAVE_PWRITE
 #define NGX_HAVE_PWRITE  1
 #endif
 
-
 #ifndef NGX_HAVE_PWRITEV
 #define NGX_HAVE_PWRITEV  1
 #endif
 
-
 #ifndef NGX_SYS_NERR
 #define NGX_SYS_NERR  12 /* was 135, Unikraft does not have all the error 
codes */
 #endif
 
-
 #ifndef NGX_HAVE_LOCALTIME_R
 #define NGX_HAVE_LOCALTIME_R  1
 #endif
 
-
 #ifndef NGX_HAVE_CLOCK_MONOTONIC
 #define NGX_HAVE_CLOCK_MONOTONIC  0
 #endif
 
-
 #ifndef NGX_HAVE_POSIX_MEMALIGN
 #define NGX_HAVE_POSIX_MEMALIGN  1
 #endif
 
-
 #ifndef NGX_HAVE_MEMALIGN
 #define NGX_HAVE_MEMALIGN  1
 #endif
 
-
 #ifndef NGX_HAVE_MAP_ANON
 #define NGX_HAVE_MAP_ANON  1
 #endif
 
-
 #ifndef NGX_HAVE_MAP_DEVZERO
 #define NGX_HAVE_MAP_DEVZERO  1
 #endif
 
-
 #ifndef NGX_HAVE_SYSVSHM
 #define NGX_HAVE_SYSVSHM  1
 #endif
 
-
 #ifndef NGX_HAVE_POSIX_SEM
 #define NGX_HAVE_POSIX_SEM  1
 #endif
 
-
 #ifndef NGX_HAVE_MSGHDR_MSG_CONTROL
 #define NGX_HAVE_MSGHDR_MSG_CONTROL  1
 #endif
 
-
 #ifndef NGX_HAVE_FIONBIO
 #define NGX_HAVE_FIONBIO  1 /* ioctl(FIONBIO) */
 #endif
 
-
 #ifndef NGX_HAVE_GMTOFF
 #define NGX_HAVE_GMTOFF  1
 #endif
 
-
 #ifndef NGX_HAVE_D_TYPE
 #define NGX_HAVE_D_TYPE  1
 #endif
 
-
 #ifndef NGX_HAVE_SC_NPROCESSORS_ONLN
 #define NGX_HAVE_SC_NPROCESSORS_ONLN  1
 #endif
 
-
 #ifndef NGX_HAVE_LEVEL1_DCACHE_LINESIZE
 #define NGX_HAVE_LEVEL1_DCACHE_LINESIZE  1
 #endif
 
-
 #ifndef NGX_HAVE_OPENAT
 #define NGX_HAVE_OPENAT  1
 #endif
 
-
 #ifndef NGX_HAVE_GETADDRINFO
 #define NGX_HAVE_GETADDRINFO  1
 #endif
 
-
 #ifndef NGX_HAVE_SELECT
 #define NGX_HAVE_SELECT  1
 #endif
 
+#ifdef CONFIG_LIBNGINX_HTTP_V2
+#ifndef NGX_HTTP_V2
+#define NGX_HTTP_V2  1
+#endif
+#else
+#ifndef NGX_HTTP_V2
+#define NGX_HTTP_V2  0
+#endif
+#endif
+
+#ifndef NGX_SSL
+#ifdef CONFIG_LIBSSL
+#define NGX_SSL  1
+#else
+#define NGX_SSL  0
+#endif
+#endif
+
+#ifndef NGX_OPENSSL
+#if defined(CONFIG_LIBSSL)
+#define NGX_OPENSSL  1
+#else
+#define NGX_OPENSSL  0
+#endif
+#endif
+
+#ifndef NGX_HTTP_SSL
+#ifdef CONFIG_LIBNGINX_HTTP_SSL
+#define NGX_HTTP_SSL  1
+#else
+#define NGX_HTTP_SSL  0
+#endif
+#endif
 
 #ifndef NGX_HTTP_CACHE
 #define NGX_HTTP_CACHE  0 /* disabled module */
 #endif
 
+#ifndef NGX_HTTP_HEADERS
+#define NGX_HTTP_HEADERS  1
+#endif
 
 #ifndef NGX_HTTP_GZIP
-#define NGX_HTTP_GZIP  0 /* disabled module */
+#ifdef CONFIG_LIBNGINX_HTTP_GZIP
+#define NGX_HTTP_GZIP  1
+#else
+#define NGX_HTTP_GZIP  0
+#endif
 #endif
 
-
+#ifdef CONFIG_LIBNGINX_HTTP_SSI
 #ifndef NGX_HTTP_SSI
 #define NGX_HTTP_SSI  1
 #endif
+#endif
 
-
+#ifdef CONFIG_LIBCRYPTO
 #ifndef NGX_CRYPT
-#define NGX_CRYPT  0 /* disabled module */
+#define NGX_CRYPT  1
+#endif
+#else
+#ifndef NGX_CRYPT
+#define NGX_CRYPT  0
+#endif
 #endif
-
 
 #ifndef NGX_HTTP_X_FORWARDED_FOR
 #define NGX_HTTP_X_FORWARDED_FOR  1
 #endif
 
-
 #ifndef NGX_HTTP_X_FORWARDED_FOR
 #define NGX_HTTP_X_FORWARDED_FOR  1
 #endif
 
-
 #ifndef NGX_HTTP_UPSTREAM_ZONE
 #define NGX_HTTP_UPSTREAM_ZONE  1
 #endif
 
-
+#ifdef CONFIG_LIBPCRE
 #ifndef NGX_PCRE
-#define NGX_PCRE  0 /* disabled module */
+#define NGX_PCRE  1
 #endif
 
-
 #ifndef NGX_HAVE_PCRE_JIT
-#define NGX_HAVE_PCRE_JIT  0 /* disabled module */
+#define NGX_HAVE_PCRE_JIT  0
+#endif
 #endif
 
-
+#ifdef CONFIG_LIBZLIB
 #ifndef NGX_ZLIB
-#define NGX_ZLIB  0 /* disabled module */
+#define NGX_ZLIB  1
+#endif
+#else
+#ifndef NGX_ZLIB
+#define NGX_ZLIB  0
+#endif
 #endif
-
 
 #ifndef NGX_PREFIX
 #define NGX_PREFIX  "/nginx/"
 #endif
 
-
 #ifndef NGX_CONF_PREFIX
 #define NGX_CONF_PREFIX  "conf/"
 #endif
 
-
 #ifndef NGX_SBIN_PATH
 #define NGX_SBIN_PATH  "sbin/nginx"
 #endif
 
-
 #ifndef NGX_CONF_PATH
 #define NGX_CONF_PATH  "conf/nginx.conf"
 #endif
 
-
 #ifndef NGX_PID_PATH
 #define NGX_PID_PATH  "logs/nginx.pid"
 #endif
 
-
 #ifndef NGX_LOCK_PATH
 #define NGX_LOCK_PATH  "logs/nginx.lock"
 #endif
 
-
 #ifndef NGX_ERROR_LOG_PATH
 #define NGX_ERROR_LOG_PATH  "logs/error.log"
 #endif
 
-
 #ifndef NGX_HTTP_LOG_PATH
 #define NGX_HTTP_LOG_PATH  "logs/access.log"
 #endif
 
-
 #ifndef NGX_HTTP_CLIENT_TEMP_PATH
 #define NGX_HTTP_CLIENT_TEMP_PATH  "client_body_temp"
 #endif
 
-
 #ifndef NGX_HTTP_PROXY_TEMP_PATH
 #define NGX_HTTP_PROXY_TEMP_PATH  "proxy_temp"
 #endif
 
-
 #ifndef NGX_HTTP_FASTCGI_TEMP_PATH
 #define NGX_HTTP_FASTCGI_TEMP_PATH  "fastcgi_temp"
 #endif
 
-
 #ifndef NGX_HTTP_UWSGI_TEMP_PATH
 #define NGX_HTTP_UWSGI_TEMP_PATH  "uwsgi_temp"
 #endif
 
-
 #ifndef NGX_HTTP_SCGI_TEMP_PATH
 #define NGX_HTTP_SCGI_TEMP_PATH  "scgi_temp"
 #endif
 
-
 #ifndef NGX_SUPPRESS_WARN
 #define NGX_SUPPRESS_WARN  1
 #endif
 
-
 #ifndef NGX_SMP
 #define NGX_SMP  0
 #endif
 
-
 #ifndef NGX_USER
 #define NGX_USER  "root"
 #endif
 
-
 #ifndef NGX_GROUP
 #define NGX_GROUP  "root"
 #endif
diff --git a/ngx_modules.c b/ngx_modules.c
index 99e6eac..3015582 100644
--- a/ngx_modules.c
+++ b/ngx_modules.c
@@ -2,116 +2,671 @@
 #include <ngx_config.h>
 #include <ngx_core.h>
 
-
-
 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_regex_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_select_module;
+
+#ifdef CONFIG_LIBNGINX_HTTP
+#include <ngx_http.h>
+
 extern ngx_module_t  ngx_http_module;
 extern ngx_module_t  ngx_http_core_module;
 extern ngx_module_t  ngx_http_log_module;
+
+#ifdef CONFIG_LIBNGINX_UPSTREAM
 extern ngx_module_t  ngx_http_upstream_module;
+#endif
+
+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;
+
+#ifdef CONFIG_LIBNGINX_HTTP_V2
+extern ngx_module_t  ngx_http_v2_filter_module;
+#endif
+
+extern ngx_module_t  ngx_http_range_header_filter_module;
+
+#ifdef CONFIG_LIBNGINX_HTTP_GZIP
+extern ngx_module_t  ngx_http_gzip_filter_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_POSTPONE
+extern ngx_module_t  ngx_http_postpone_filter_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_SSI
+extern ngx_module_t  ngx_http_ssi_filter_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_CHARSET
+extern ngx_module_t  ngx_http_charset_filter_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_XSLT
+extern ngx_module_t  ngx_http_xslt_filter_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_IMAGE_FILTER
+extern ngx_module_t  ngx_http_image_filter_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_SUB
+extern ngx_module_t  ngx_http_sub_filter_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_ADDITION
+extern ngx_module_t  ngx_http_addition_filter_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_GUNZIP
+extern ngx_module_t  ngx_http_gunzip_filter_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_USERID
+extern ngx_module_t  ngx_http_userid_filter_module;
+#endif
+
+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;
+
+#ifdef CONFIG_LIBNGINX_HTTP_SLICE
+extern ngx_module_t  ngx_http_slice_filter_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_V2
+extern ngx_module_t  ngx_http_v2_module;
+#endif
+
 extern ngx_module_t  ngx_http_static_module;
+
+#ifdef CONFIG_LIBNGINX_HTTP_GZIP_STATIC
+extern ngx_module_t  ngx_http_gzip_static_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_DAV
+extern ngx_module_t  ngx_http_dav_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_AUTOINDEX
 extern ngx_module_t  ngx_http_autoindex_module;
+#endif
+
 extern ngx_module_t  ngx_http_index_module;
+
+#ifdef CONFIG_LIBNGINX_HTTP_RANDOM_INDEX
+extern ngx_module_t  ngx_http_random_index_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_MIRROR
 extern ngx_module_t  ngx_http_mirror_module;
+#endif
+
 extern ngx_module_t  ngx_http_try_files_module;
-//extern ngx_module_t  ngx_http_auth_basic_module;
+
+#ifdef CONFIG_LIBNGINX_HTTP_AUTH_REQUEST
+extern ngx_module_t  ngx_http_auth_request_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_AUTH_BASIC
+extern ngx_module_t  ngx_http_auth_basic_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_ACCESS
 extern ngx_module_t  ngx_http_access_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_LIMIT_CONN
 extern ngx_module_t  ngx_http_limit_conn_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_LIMIT_REQ
 extern ngx_module_t  ngx_http_limit_req_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_REALIP
+extern ngx_module_t  ngx_http_realip_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_STATUS
+extern ngx_module_t  ngx_http_status_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_GEO
 extern ngx_module_t  ngx_http_geo_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_GEOIP
+extern ngx_module_t  ngx_http_geoip_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_MAP
 extern ngx_module_t  ngx_http_map_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_SPLIT_CLENTS
 extern ngx_module_t  ngx_http_split_clients_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_REFERER
 extern ngx_module_t  ngx_http_referer_module;
-//extern ngx_module_t  ngx_http_rewrite_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_REWRITE
+extern ngx_module_t  ngx_http_rewrite_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_SSL
+extern ngx_module_t  ngx_http_ssl_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_PROXY
 extern ngx_module_t  ngx_http_proxy_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_FASTCGI
 extern ngx_module_t  ngx_http_fastcgi_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UWSGI
 extern ngx_module_t  ngx_http_uwsgi_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_SCGI
 extern ngx_module_t  ngx_http_scgi_module;
+#endif
+
+#if defined CONFIG_LIBNGINX_HTTP_GRPC  && defined CONFIG_LIBNGINX_HTTP_V2
+extern ngx_module_t  ngx_http_grpc_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_PERL
+extern ngx_module_t  ngx_http_perl_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_MEMCACHED
 extern ngx_module_t  ngx_http_memcached_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_EMPTY_GIF
 extern ngx_module_t  ngx_http_empty_gif_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_BROWSER
 extern ngx_module_t  ngx_http_browser_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_SECURE_LINK
+extern ngx_module_t  ngx_http_secure_link_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_DEGRADATION
+extern ngx_module_t  ngx_http_degradation_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_FLV
+extern ngx_module_t  ngx_http_flv_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_MP4
+extern ngx_module_t  ngx_http_mp4_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_HASH
 extern ngx_module_t  ngx_http_upstream_hash_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_IP_HASH
 extern ngx_module_t  ngx_http_upstream_ip_hash_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_LEAST_CONN
 extern ngx_module_t  ngx_http_upstream_least_conn_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_RANDOM
 extern ngx_module_t  ngx_http_upstream_random_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_KEEPALIVE
 extern ngx_module_t  ngx_http_upstream_keepalive_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_ZONE
 extern ngx_module_t  ngx_http_upstream_zone_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_sub_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;
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_STUB_STATUS
+extern ngx_module_t  ngx_http_stub_status_module;
+#endif
+#endif
+
+#ifdef CONFIG_LIBNGINX_MAIL
+extern ngx_module_t  ngx_mail_module;
+extern ngx_module_t  ngx_mail_core_module;
+
+#ifdef CONFIG_LIBNGINX_MAIL_SSL
+extern ngx_module_t  ngx_mail_ssl_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_MAIL_POP3
+extern ngx_module_t  ngx_mail_pop3_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_MAIL_IMAP
+extern ngx_module_t  ngx_mail_imap_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_MAIL_SMTP
+extern ngx_module_t  ngx_mail_smtp_module;
+#endif
+
+extern ngx_module_t  ngx_mail_auth_http_module;
+extern ngx_module_t  ngx_mail_proxy_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM
+extern ngx_module_t  ngx_stream_module;
+extern ngx_module_t  ngx_stream_core_module;
+extern ngx_module_t  ngx_stream_log_module;
+extern ngx_module_t  ngx_stream_proxy_module;
+
+#ifdef CONFIG_LIBNGINX_STREAM_UPSTREAM
+extern ngx_module_t  ngx_stream_upstream_module;
+#endif
+
+extern ngx_module_t  ngx_stream_write_filter_module;
+
+#ifdef CONFIG_LIBNGINX_STREAM_SSL
+extern ngx_module_t  ngx_stream_ssl_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_REALIP
+extern ngx_module_t  ngx_stream_realip_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_ACCESS
+extern ngx_module_t  ngx_stream_access_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_GEO
+extern ngx_module_t  ngx_stream_geo_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_GEOIP
+extern ngx_module_t  ngx_stream_geoip_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_SPLIT_CLIENTS
+extern ngx_module_t  ngx_stream_split_clients_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_RETURN
+extern ngx_module_t  ngx_stream_return_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_UPSTREAM_LEAST_CONN
+extern ngx_module_t  ngx_stream_upstream_least_conn_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_UPSTREAM_RANDOM
+extern ngx_module_t  ngx_stream_upstream_random_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_UPSTREAM_ZONE
+extern ngx_module_t  ngx_stream_upstream_zone_module;
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_SSL_PREREAD
+extern ngx_module_t  ngx_stream_ssl_preread_module;
+#endif
+#endif
+
+#ifdef CONFIG_LIBNSSL
+extern ngx_module_t  ngx_openssl_module;
+#endif
+
+#ifdef CONFIG_LIBPCRE
+extern ngx_module_t  ngx_regex_module;
+#endif
 
 ngx_module_t *ngx_modules[] = {
     &ngx_core_module,
     &ngx_errlog_module,
     &ngx_conf_module,
-//    &ngx_regex_module,
     &ngx_events_module,
     &ngx_event_core_module,
-//    &ngx_epoll_module,
     &ngx_select_module,
+
+#ifdef CONFIG_LIBNGINX_HTTP
     &ngx_http_module,
     &ngx_http_core_module,
     &ngx_http_log_module,
+
+#ifdef CONFIG_LIBNGINX_UPSTREAM
     &ngx_http_upstream_module,
+#endif
+
+    &ngx_http_write_filter_module,
+    &ngx_http_header_filter_module,
+    &ngx_http_chunked_filter_module,
+
+#ifdef CONFIG_LIBNGINX_HTTP_V2
+    &ngx_http_v2_filter_module,
+#endif
+
+    &ngx_http_range_header_filter_module,
+
+#ifdef CONFIG_LIBNGINX_HTTP_GZIP
+    &ngx_http_gzip_filter_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_POSTPONE
+    &ngx_http_postpone_filter_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_SSI
+    &ngx_http_ssi_filter_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_CHARSET
+    &ngx_http_charset_filter_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_XSLT
+    &ngx_http_xslt_filter_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_IMAGE_FILTER
+    &ngx_http_image_filter_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_SUB
+    &ngx_http_sub_filter_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_ADDITION
+    &ngx_http_addition_filter_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_GUNZIP
+    &ngx_http_gunzip_filter_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_USERID
+    &ngx_http_userid_filter_module,
+#endif
+
+    &ngx_http_headers_filter_module,
+    &ngx_http_copy_filter_module,
+    &ngx_http_range_body_filter_module,
+    &ngx_http_not_modified_filter_module,
+
+#ifdef CONFIG_LIBNGINX_HTTP_SLICE
+    &ngx_http_slice_filter_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_V2
+    &ngx_http_v2_module,
+#endif
+
     &ngx_http_static_module,
+
+#ifdef CONFIG_LIBNGINX_HTTP_GZIP_STATIC
+    &ngx_http_gzip_static_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_DAV
+    &ngx_http_dav_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_AUTOINDEX
     &ngx_http_autoindex_module,
+#endif
+
     &ngx_http_index_module,
+
+#ifdef CONFIG_LIBNGINX_HTTP_RANDOM_INDEX
+    &ngx_http_random_index_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_MIRROR
     &ngx_http_mirror_module,
+#endif
+
     &ngx_http_try_files_module,
-//    &ngx_http_auth_basic_module,
+
+#ifdef CONFIG_LIBNGINX_HTTP_AUTH_REQUEST
+    &ngx_http_auth_request_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_AUTH_BASIC
+    &ngx_http_auth_basic_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_ACCESS
     &ngx_http_access_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_LIMIT_CONN
     &ngx_http_limit_conn_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_LIMIT_REQ
     &ngx_http_limit_req_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_REALIP
+    &ngx_http_realip_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_STATUS
+    &ngx_http_status_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_GEO
     &ngx_http_geo_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_GEOIP
+    &ngx_http_geoip_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_MAP
     &ngx_http_map_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_SPLIT_CLENTS
     &ngx_http_split_clients_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_REFERER
     &ngx_http_referer_module,
-//    &ngx_http_rewrite_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_REWRITE
+    &ngx_http_rewrite_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_SSL
+    &ngx_http_ssl_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_PROXY
     &ngx_http_proxy_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_FASTCGI
     &ngx_http_fastcgi_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UWSGI
     &ngx_http_uwsgi_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_SCGI
     &ngx_http_scgi_module,
+#endif
+
+#if defined CONFIG_LIBNGINX_HTTP_GRPC && defined CONFIG_LIBNGINX_HTTP_V2
+    &ngx_http_grpc_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_PERL
+    &ngx_http_perl_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_MEMCACHED
     &ngx_http_memcached_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_EMPTY_GIF
     &ngx_http_empty_gif_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_BROWSER
     &ngx_http_browser_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_SECURE_LINK
+    &ngx_http_secure_link_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_DEGRADATION
+    &ngx_http_degradation_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_FLV
+    &ngx_http_flv_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_MP4
+    &ngx_http_mp4_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_HASH
     &ngx_http_upstream_hash_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_IP_HASH
     &ngx_http_upstream_ip_hash_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_LEAST_CONN
     &ngx_http_upstream_least_conn_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_RANDOM
     &ngx_http_upstream_random_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_KEEPALIVE
     &ngx_http_upstream_keepalive_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_ZONE
     &ngx_http_upstream_zone_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_sub_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,
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_STUB_STATUS
+    &ngx_http_stub_status_module,
+#endif
+#endif
+
+#ifdef CONFIG_LIBNGINX_MAIL
+    &ngx_mail_module,
+    &ngx_mail_core_module,
+
+#ifdef CONFIG_LIBNGINX_MAIL_SSL
+    &ngx_mail_ssl_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_MAIL_POP3
+    &ngx_mail_pop3_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_MAIL_IMAP
+    &ngx_mail_imap_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_MAIL_SMTP
+    &ngx_mail_smtp_module,
+#endif
+
+    &ngx_mail_auth_http_module,
+    &ngx_mail_proxy_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM
+    &ngx_stream_module,
+    &ngx_stream_core_module,
+    &ngx_stream_log_module,
+    &ngx_stream_proxy_module,
+
+#ifdef CONFIG_LIBNGINX_STREAM_UPSTREAM
+    &ngx_stream_upstream_module,
+#endif
+
+    &ngx_stream_write_filter_module,
+
+#ifdef CONFIG_LIBNGINX_STREAM_SSL
+    &ngx_stream_ssl_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_REALIP
+    &ngx_stream_realip_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_ACCESS
+    &ngx_stream_access_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_GEO
+    &ngx_stream_geo_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_GEOIP
+    &ngx_stream_geoip_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_SPLIT_CLIENTS
+    &ngx_stream_split_clients_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_RETURN
+    &ngx_stream_return_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_UPSTREAM_LEAST_CONN
+    &ngx_stream_upstream_least_conn_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_UPSTREAM_RANDOM
+    &ngx_stream_upstream_random_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_UPSTREAM_ZONE
+    &ngx_stream_upstream_zone_module,
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_SSL_PREREAD
+    &ngx_stream_ssl_preread_module,
+#endif
+#endif
+
+#ifdef CONFIG_LIBNSSL
+    &ngx_openssl_module,
+#endif
+
+#ifdef CONFIG_LIBPCRE
+    &ngx_regex_module,
+#endif
+
     NULL
 };
 
@@ -119,56 +674,332 @@ char *ngx_module_names[] = {
     "ngx_core_module",
     "ngx_errlog_module",
     "ngx_conf_module",
-//    "ngx_regex_module",
     "ngx_events_module",
     "ngx_event_core_module",
-//    "ngx_epoll_module",
     "ngx_select_module",
+
+#ifdef CONFIG_LIBNGINX_HTTP
     "ngx_http_module",
     "ngx_http_core_module",
     "ngx_http_log_module",
+    "ngx_http_write_filter_module",
+    "ngx_http_header_filter_module",
+    "ngx_http_chunked_filter_module",
+
+#ifdef CONFIG_LIBNGINX_UPSTREAM
     "ngx_http_upstream_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_V2
+    "ngx_http_v2_filter_module",
+#endif
+
+    "ngx_http_range_header_filter_module",
+
+#ifdef CONFIG_LIBNGINX_HTTP_GZIP
+    "ngx_http_gzip_filter_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_POSTPONE
+    "ngx_http_postpone_filter_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_SSI
+    "ngx_http_ssi_filter_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_CHARSET
+    "ngx_http_charset_filter_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_XSLT
+    "ngx_http_xslt_filter_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_IMAGE_FILTER
+    "ngx_http_image_filter_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_SUB
+    "ngx_http_sub_filter_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_ADDITION
+    "ngx_http_addition_filter_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_GUNZIP
+    "ngx_http_gunzip_filter_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_USERID
+    "ngx_http_userid_filter_module",
+#endif
+
+    "ngx_http_headers_filter_module",
+    "ngx_http_copy_filter_module",
+    "ngx_http_range_body_filter_module",
+    "ngx_http_not_modified_filter_module",
+
+#ifdef CONFIG_LIBNGINX_HTTP_SLICE
+    "ngx_http_slice_filter_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_V2
+    "ngx_http_v2_module",
+#endif
+
     "ngx_http_static_module",
+
+#ifdef CONFIG_LIBNGINX_HTTP_GZIP_STATIC
+    "ngx_http_gzip_static_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_DAV
+    "ngx_http_dav_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_AUTOINDEX
     "ngx_http_autoindex_module",
+#endif
+
     "ngx_http_index_module",
+
+#ifdef CONFIG_LIBNGINX_HTTP_RANDOM_INDEX
+    "ngx_http_random_index_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_MIRROR
     "ngx_http_mirror_module",
+#endif
+
     "ngx_http_try_files_module",
-//    "ngx_http_auth_basic_module",
+
+#ifdef CONFIG_LIBNGINX_HTTP_AUTH_REQUEST
+    "ngx_http_auth_request_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_AUTH_BASIC
+    "ngx_http_auth_basic_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_ACCESS
     "ngx_http_access_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_LIMIT_CONN
     "ngx_http_limit_conn_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_LIMIT_REQ
     "ngx_http_limit_req_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_REALIP
+    "ngx_http_realip_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_STATUS
+    "ngx_http_status_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_GEO
     "ngx_http_geo_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_GEOIP
+    "ngx_http_geoip_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_MAP
     "ngx_http_map_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_SPLIT_CLENTS
     "ngx_http_split_clients_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_REFERER
     "ngx_http_referer_module",
-//    "ngx_http_rewrite_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_REWRITE
+    "ngx_http_rewrite_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_SSL
+    "ngx_http_ssl_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_PROXY
     "ngx_http_proxy_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_FASTCGI
     "ngx_http_fastcgi_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UWSGI
     "ngx_http_uwsgi_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_SCGI
     "ngx_http_scgi_module",
+#endif
+
+#if defined CONFIG_LIBNGINX_HTTP_GRPC  && defined CONFIG_LIBNGINX_HTTP_V2
+    "ngx_http_grpc_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_PERL
+    "ngx_http_perl_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_MEMCACHED
     "ngx_http_memcached_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_EMPTY_GIF
     "ngx_http_empty_gif_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_BROWSER
     "ngx_http_browser_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_SECURE_LINK
+    "ngx_http_secure_link_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_DEGRADATION
+    "ngx_http_degradation_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_FLV
+    "ngx_http_flv_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_MP4
+    "ngx_http_mp4_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_HASH
     "ngx_http_upstream_hash_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_IP_HASH
     "ngx_http_upstream_ip_hash_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_LEAST_CONN
     "ngx_http_upstream_least_conn_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_RANDOM
     "ngx_http_upstream_random_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_KEEPALIVE
     "ngx_http_upstream_keepalive_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_UPSTREAM_ZONE
     "ngx_http_upstream_zone_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_sub_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",
+#endif
+
+#ifdef CONFIG_LIBNGINX_HTTP_STUB_STATUS
+    "ngx_http_stub_status_module",
+#endif
+#endif
+
+#ifdef CONFIG_LIBNGINX_MAIL
+    "ngx_mail_module",
+    "ngx_mail_core_module",
+
+#ifdef CONFIG_LIBNGINX_MAIL_SSL
+    "ngx_mail_ssl_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_MAIL_POP3
+    "ngx_mail_pop3_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_MAIL_IMAP
+    "ngx_mail_imap_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_MAIL_SMTP
+    "ngx_mail_smtp_module",
+#endif
+
+    "ngx_mail_auth_http_module",
+    "ngx_mail_proxy_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM
+    "ngx_stream_module",
+    "ngx_stream_core_module",
+    "ngx_stream_log_module",
+    "ngx_stream_proxy_module",
+
+#ifdef CONFIG_LIBNGINX_STREAM_UPSTREAM
+    "ngx_stream_upstream_module",
+#endif
+
+    "ngx_stream_write_filter_module",
+
+#ifdef CONFIG_LIBNGINX_STREAM_SSL
+    "ngx_stream_ssl_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_REALIP
+    "ngx_stream_realip_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_ACCESS
+    "ngx_stream_access_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_GEO
+    "ngx_stream_geo_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_GEOIP
+    "ngx_stream_geoip_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_SPLIT_CLIENTS
+    "ngx_stream_split_clients_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_RETURN
+    "ngx_stream_return_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_UPSTREAM_LEAST_CONN
+    "ngx_stream_upstream_least_conn_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_UPSTREAM_RANDOM
+    "ngx_stream_upstream_random_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_UPSTREAM_ZONE
+    "ngx_stream_upstream_zone_module",
+#endif
+
+#ifdef CONFIG_LIBNGINX_STREAM_SSL_PREREAD
+    "ngx_stream_ssl_preread_module",
+#endif
+#endif
+
+#ifdef CONFIG_LIBNSSL
+    "ngx_openssl_module",
+#endif
+
+#ifdef CONFIG_LIBPCRE
+    "ngx_regex_module",
+#endif
+
     NULL
 };
-
-- 
2.11.0



_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.