view xml/en/docs/configure.xml @ 2956:a85e4d126bc7

Updated docs for the upcoming NGINX Plus release.
author Yaroslav Zhuravlev <yar@nginx.com>
date Tue, 02 May 2023 11:39:21 +0100
parents 5f1d472f6a97
children 23eedf89fd5d
line wrap: on
line source

<!--
  Copyright (C) Igor Sysoev
  Copyright (C) Nginx, Inc.
  -->

<!DOCTYPE article SYSTEM "../../../dtd/article.dtd">

<article name="Building nginx from Sources"
         link="/en/docs/configure.html"
         lang="en"
         rev="20">

<section>

<para>
The build is configured using the <command>configure</command> command.
It defines various aspects of the system, including the methods nginx
is allowed to use for connection processing.
At the end it creates a <path>Makefile</path>.
</para>

<para>
The <command>configure</command> command supports the following parameters:
</para>

<para>
<list type="tag">

<tag-name>
<literal>--help</literal>
</tag-name>
<tag-desc>
prints a help message.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name id="prefix">
<literal>--prefix=<value>path</value></literal>
</tag-name>
<tag-desc>
defines a directory that will keep server files.
This same directory will also be used for all relative paths set by
<command>configure</command> (except for paths to libraries sources)
and in the <path>nginx.conf</path> configuration file.
It is set to the <path>/usr/local/nginx</path> directory by default.
</tag-desc>

<tag-name>
<literal>--sbin-path=<value>path</value></literal>
</tag-name>
<tag-desc>
sets the name of an nginx executable file.
This name is used only during installation.
By default the file is named
<path><value>prefix</value>/sbin/nginx</path>.
</tag-desc>

<tag-name>
<literal>--modules-path=<value>path</value></literal>
</tag-name>
<tag-desc>
defines a directory where nginx dynamic modules will be installed.
By default the <path><value>prefix</value>/modules</path> directory is used.
</tag-desc>

<tag-name>
<literal>--conf-path=<value>path</value></literal>
</tag-name>
<tag-desc>
sets the name of an <path>nginx.conf</path> configuration file.
If needs be, nginx can always be started with a different configuration file,
by specifying it in the command-line parameter
<nobr><literal>-c <value>file</value></literal></nobr>.
By default the file is named
<path><value>prefix</value>/conf/nginx.conf</path>.
</tag-desc>

<tag-name>
<literal>--error-log-path=<value>path</value></literal>
</tag-name>
<tag-desc>
sets the name of the primary error, warnings, and diagnostic file.
After installation, the file name can always be changed in the
<path>nginx.conf</path> configuration file using the
<link doc="ngx_core_module.xml" id="error_log"/> directive.
By default the file is named
<path><value>prefix</value>/logs/error.log</path>.
</tag-desc>

<tag-name>
<literal>--pid-path=<value>path</value></literal>
</tag-name>
<tag-desc>
sets the name of an <path>nginx.pid</path> file
that will store the process ID of the main process.
After installation, the file name can always be changed in the
<path>nginx.conf</path> configuration file using the
<link doc="ngx_core_module.xml" id="pid"/> directive.
By default the file is named
<path><value>prefix</value>/logs/nginx.pid</path>.
</tag-desc>

<tag-name>
<literal>--lock-path=<value>path</value></literal>
</tag-name>
<tag-desc>
sets a prefix for the names of lock files.
After installation, the value can always be changed in the
<path>nginx.conf</path> configuration file using the
<link doc="ngx_core_module.xml" id="lock_file"/> directive.
By default the value is
<path><value>prefix</value>/logs/nginx.lock</path>.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name>
<literal>--user=<value>name</value></literal>
</tag-name>
<tag-desc>
sets the name of an unprivileged user whose credentials will be used
by worker processes.
After installation, the name can always be changed in the
<path>nginx.conf</path> configuration file using the
<link doc="ngx_core_module.xml" id="user"/> directive.
The default user name is nobody.
</tag-desc>

<tag-name>
<literal>--group=<value>name</value></literal>
</tag-name>
<tag-desc>
sets the name of a group whose credentials will be used
by worker processes.
After installation, the name can always be changed in the
<path>nginx.conf</path> configuration file using the
<link doc="ngx_core_module.xml" id="user"/> directive.
By default, a group name is set to the name of an unprivileged user.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name id="build">
<literal>--build=<value>name</value></literal>
</tag-name>
<tag-desc>
sets an optional nginx build name.
</tag-desc>

<tag-name>
<literal>--builddir=<value>path</value></literal>
</tag-name>
<tag-desc>
sets a build directory.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name>
<literal>--with-select_module</literal><br/>
<literal>--without-select_module</literal>
</tag-name>
<tag-desc>
enables or disables building a module that allows the server to work
with the <c-func>select</c-func> method.
This module is built automatically if the platform does not appear
to support more appropriate methods such as kqueue, epoll, or /dev/poll.
</tag-desc>

<tag-name>
<literal>--with-poll_module</literal><br/>
<literal>--without-poll_module</literal>
</tag-name>
<tag-desc>
enables or disables building a module that allows the server to work
with the <c-func>poll</c-func> method.
This module is built automatically if the platform does not appear
to support more appropriate methods such as kqueue, epoll, or /dev/poll.
</tag-desc>

<tag-name>
<literal>--with-threads</literal>
</tag-name>
<tag-desc>
enables the use of
<link doc="ngx_core_module.xml" id="thread_pool">thread pools</link>.
</tag-desc>

<tag-name>
<literal>--with-file-aio</literal>
</tag-name>
<tag-desc>
enables the use of
<link doc="http/ngx_http_core_module.xml" id="aio">asynchronous file I/O</link>
(AIO) on FreeBSD and Linux.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name>
<literal>--with-http_ssl_module</literal>
</tag-name>
<tag-desc>
enables building a module that adds the
<link doc="http/ngx_http_ssl_module.xml">HTTPS protocol support</link>
to an HTTP server.
This module is not built by default.
The OpenSSL library is required to build and run this module.
</tag-desc>

<tag-name>
<literal>--with-http_v2_module</literal>
</tag-name>
<tag-desc>
enables building a module that provides support for
<link doc="http/ngx_http_v2_module.xml">HTTP/2</link>.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-http_v3_module</literal>
</tag-name>
<tag-desc>
enables building a module that provides support for
<link doc="http/ngx_http_v3_module.xml">HTTP/3</link>.
This module is not built by default.
An SSL library that provides HTTP/3 support
is recommended to build and run this module, such as
<link url="https://boringssl.googlesource.com/boringssl">BoringSSL</link>,
<link url="https://www.libressl.org">LibreSSL</link>, or
<link url="https://github.com/quictls/openssl">QuicTLS</link>.
Otherwise, if using the OpenSSL library,
OpenSSL compatibility layer will be used
that does not support QUIC
<link doc="http/ngx_http_ssl_module.xml" id="ssl_early_data">early data</link>.
</tag-desc>

<tag-name>
<literal>--with-http_realip_module</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="http/ngx_http_realip_module.xml">ngx_http_realip_module</link>
module that changes the client address to the address
sent in the specified header field.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-http_addition_module</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="http/ngx_http_addition_module.xml">ngx_http_addition_module</link>
module that adds text before and after a response.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-http_xslt_module</literal><br/>
<literal>--with-http_xslt_module=dynamic</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="http/ngx_http_xslt_module.xml">ngx_http_xslt_module</link>
module that transforms XML responses using one or more XSLT stylesheets.
This module is not built by default.
The <link url="http://xmlsoft.org">libxml2</link> and
<link url="http://xmlsoft.org/XSLT/">libxslt</link> libraries
are required to build and run this module.
</tag-desc>

<tag-name>
<literal>--with-http_image_filter_module</literal><br/>
<literal>--with-http_image_filter_module=dynamic</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="http/ngx_http_image_filter_module.xml">ngx_http_image_filter_module</link>
module that transforms images in JPEG, GIF, PNG, and WebP formats.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-http_geoip_module</literal><br/>
<literal>--with-http_geoip_module=dynamic</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="http/ngx_http_geoip_module.xml">ngx_http_geoip_module</link>
module that creates variables depending on the client IP address
and the precompiled
<link url="http://www.maxmind.com">MaxMind</link> databases.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-http_sub_module</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="http/ngx_http_sub_module.xml">ngx_http_sub_module</link>
module that modifies a response by replacing one specified string by another.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-http_dav_module</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="http/ngx_http_dav_module.xml">ngx_http_dav_module</link>
module that provides file management automation via the WebDAV protocol.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-http_flv_module</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="http/ngx_http_flv_module.xml">ngx_http_flv_module</link>
module that provides pseudo-streaming server-side support
for Flash Video (FLV) files.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-http_mp4_module</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="http/ngx_http_mp4_module.xml">ngx_http_mp4_module</link>
module that provides pseudo-streaming server-side support
for MP4 files.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-http_gunzip_module</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="http/ngx_http_gunzip_module.xml">ngx_http_gunzip_module</link>
module that decompresses responses
with “<literal>Content-Encoding: gzip</literal>”
for clients that do not support “gzip” encoding method.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-http_gzip_static_module</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="http/ngx_http_gzip_static_module.xml">ngx_http_gzip_static_module</link>
module that enables sending precompressed files
with the “<literal>.gz</literal>” filename extension instead of regular files.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-http_auth_request_module</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="http/ngx_http_auth_request_module.xml">ngx_http_auth_request_module</link>
module that implements client authorization
based on the result of a subrequest.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-http_random_index_module</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="http/ngx_http_random_index_module.xml">ngx_http_random_index_module</link>
module that processes requests
ending with the slash character (‘<literal>/</literal>’) and picks a random
file in a directory to serve as an index file.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-http_secure_link_module</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="http/ngx_http_secure_link_module.xml">ngx_http_secure_link_module</link>
module.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-http_degradation_module</literal>
</tag-name>
<tag-desc>
enables building the
<literal>ngx_http_degradation_module</literal> module.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-http_slice_module</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="http/ngx_http_slice_module.xml">ngx_http_slice_module</link>
module that splits a request into subrequests,
each returning a certain range of response.
The module provides more effective caching of big responses.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-http_stub_status_module</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="http/ngx_http_stub_status_module.xml">ngx_http_stub_status_module</link>
module that provides access to basic status information.
This module is not built by default.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name>
<literal>--without-http_charset_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_charset_module.xml">ngx_http_charset_module</link>
module that adds the specified charset to the
<header>Content-Type</header> response header field
and can additionally convert data from one charset to another.
</tag-desc>

<tag-name>
<literal>--without-http_gzip_module</literal>
</tag-name>
<tag-desc>
disables building a module
that <link doc="http/ngx_http_gzip_module.xml">compresses responses</link>
of an HTTP server.
The zlib library is required to build and run this module.
</tag-desc>

<tag-name>
<literal>--without-http_ssi_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_ssi_module.xml">ngx_http_ssi_module</link>
module that processes SSI (Server Side Includes) commands in responses
passing through it.
</tag-desc>

<tag-name>
<literal>--without-http_userid_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_userid_module.xml">ngx_http_userid_module</link>
module that sets cookies suitable for client identification.
</tag-desc>

<tag-name>
<literal>--without-http_access_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_access_module.xml">ngx_http_access_module</link>
module that allows limiting access to certain client addresses.
</tag-desc>

<tag-name>
<literal>--without-http_auth_basic_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_auth_basic_module.xml">ngx_http_auth_basic_module</link>
module that allows limiting access to resources by validating the user name
and password using the “HTTP Basic Authentication” protocol.
</tag-desc>

<tag-name>
<literal>--without-http_mirror_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_mirror_module.xml">ngx_http_mirror_module</link>
module that implements mirroring of an original request
by creating background mirror subrequests.
</tag-desc>

<tag-name>
<literal>--without-http_autoindex_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_autoindex_module.xml">ngx_http_autoindex_module</link>
module that processes requests
ending with the slash character (‘<literal>/</literal>’) and produces
a directory listing in case the
<link doc="http/ngx_http_index_module.xml">ngx_http_index_module</link> module
cannot find an index file.
</tag-desc>

<tag-name>
<literal>--without-http_geo_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_geo_module.xml">ngx_http_geo_module</link>
module that creates variables
with values depending on the client IP address.
</tag-desc>

<tag-name>
<literal>--without-http_map_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_map_module.xml">ngx_http_map_module</link>
module that creates variables
with values depending on values of other variables.
</tag-desc>

<tag-name>
<literal>--without-http_split_clients_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_split_clients_module.xml">ngx_http_split_clients_module</link>
module that creates variables for A/B testing.
</tag-desc>

<tag-name>
<literal>--without-http_referer_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_referer_module.xml">ngx_http_referer_module</link>
module that can block access to a site for requests with invalid values
in the <header>Referer</header> header field.
</tag-desc>

<tag-name>
<literal>--without-http_rewrite_module</literal>
</tag-name>
<tag-desc>
disables building a module that allows an HTTP server to
<link doc="http/ngx_http_rewrite_module.xml">redirect requests and change URI
of requests</link>.
The PCRE library is required to build and run this module.
</tag-desc>

<tag-name>
<literal>--without-http_proxy_module</literal>
</tag-name>
<tag-desc>
disables building an HTTP server
<link doc="http/ngx_http_proxy_module.xml">proxying module</link>.
<!--
The MD5 library is required to build and run this module.
-->
</tag-desc>

<tag-name>
<literal>--without-http_fastcgi_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_fastcgi_module.xml">ngx_http_fastcgi_module</link>
module that passes requests to a FastCGI server.
</tag-desc>

<tag-name>
<literal>--without-http_uwsgi_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_uwsgi_module.xml">ngx_http_uwsgi_module</link>
module that passes requests to a uwsgi server.
</tag-desc>

<tag-name>
<literal>--without-http_scgi_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_scgi_module.xml">ngx_http_scgi_module</link>
module that passes requests to an SCGI server.
</tag-desc>

<tag-name>
<literal>--without-http_grpc_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_grpc_module.xml">ngx_http_grpc_module</link>
module that passes requests to a gRPC server.
</tag-desc>

<tag-name>
<literal>--without-http_memcached_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_memcached_module.xml">ngx_http_memcached_module</link>
module that obtains responses from a memcached server.
</tag-desc>

<tag-name>
<literal>--without-http_limit_conn_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_limit_conn_module.xml">ngx_http_limit_conn_module</link>
module that limits the number of connections per key, for example,
the number of connections from a single IP address.
</tag-desc>

<tag-name>
<literal>--without-http_limit_req_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_limit_req_module.xml">ngx_http_limit_req_module</link>
module that limits the request processing rate per key, for example,
the processing rate of requests coming from a single IP address.
</tag-desc>

<tag-name>
<literal>--without-http_empty_gif_module</literal>
</tag-name>
<tag-desc>
disables building a module that
<link doc="http/ngx_http_empty_gif_module.xml">emits single-pixel
transparent GIF</link>.
</tag-desc>

<tag-name>
<literal>--without-http_browser_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="http/ngx_http_browser_module.xml">ngx_http_browser_module</link>
module that creates variables whose values depend on the value of the
<header>User-Agent</header> request header field.
</tag-desc>

<tag-name>
<literal>--without-http_upstream_hash_module</literal>
</tag-name>
<tag-desc>
disables building a module that implements the
<link doc="http/ngx_http_upstream_module.xml" id="hash"/>
load balancing method.
</tag-desc>

<tag-name>
<literal>--without-http_upstream_ip_hash_module</literal>
</tag-name>
<tag-desc>
disables building a module that implements the
<link doc="http/ngx_http_upstream_module.xml" id="ip_hash"/>
load balancing method.
</tag-desc>

<tag-name>
<literal>--without-http_upstream_least_conn_module</literal>
</tag-name>
<tag-desc>
disables building a module that implements the
<link doc="http/ngx_http_upstream_module.xml" id="least_conn"/>
load balancing method.
</tag-desc>

<tag-name>
<literal>--without-http_upstream_random_module</literal>
</tag-name>
<tag-desc>
disables building a module that implements the
<link doc="http/ngx_http_upstream_module.xml" id="random"/>
load balancing method.
</tag-desc>

<tag-name>
<literal>--without-http_upstream_keepalive_module</literal>
</tag-name>
<tag-desc>
disables building a module that provides
<link doc="http/ngx_http_upstream_module.xml" id="keepalive">caching of
connections</link> to upstream servers.
</tag-desc>

<tag-name>
<literal>--without-http_upstream_zone_module</literal>
</tag-name>
<tag-desc>
disables building a module that makes it possible to store run-time state
of an upstream group in a shared memory
<link doc="http/ngx_http_upstream_module.xml" id="zone"/>.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name>
<literal>--with-http_perl_module</literal><br/>
<literal>--with-http_perl_module=dynamic</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="http/ngx_http_perl_module.xml">embedded Perl module</link>.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-perl_modules_path=<value>path</value></literal>
</tag-name>
<tag-desc>
defines a directory that will keep Perl modules.
</tag-desc>

<tag-name>
<literal>--with-perl=<value>path</value></literal>
</tag-name>
<tag-desc>
sets the name of the Perl binary.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name>
<literal>--http-log-path=<value>path</value></literal>
</tag-name>
<tag-desc>
sets the name of the primary request log file of the HTTP server.
After installation, the file name can always be changed in the
<path>nginx.conf</path> configuration file using the
<link doc="http/ngx_http_log_module.xml" id="access_log"/> directive.
By default the file is named
<path><value>prefix</value>/logs/access.log</path>.
</tag-desc>

<tag-name>
<literal>--http-client-body-temp-path=<value>path</value></literal>
</tag-name>
<tag-desc>
defines a directory for storing temporary files
that hold client request bodies.
After installation, the directory can always be changed in the
<path>nginx.conf</path> configuration file using the
<link doc="http/ngx_http_core_module.xml" id="client_body_temp_path"/>
directive.
By default the directory is named
<path><value>prefix</value>/client_body_temp</path>.
</tag-desc>

<tag-name>
<literal>--http-proxy-temp-path=<value>path</value></literal>
</tag-name>
<tag-desc>
defines a directory for storing temporary files
with data received from proxied servers.
After installation, the directory can always be changed in the
<path>nginx.conf</path> configuration file using the
<link doc="http/ngx_http_proxy_module.xml" id="proxy_temp_path"/>
directive.
By default the directory is named
<path><value>prefix</value>/proxy_temp</path>.
</tag-desc>

<tag-name>
<literal>--http-fastcgi-temp-path=<value>path</value></literal>
</tag-name>
<tag-desc>
defines a directory for storing temporary files
with data received from FastCGI servers.
After installation, the directory can always be changed in the
<path>nginx.conf</path> configuration file using the
<link doc="http/ngx_http_fastcgi_module.xml" id="fastcgi_temp_path"/>
directive.
By default the directory is named
<path><value>prefix</value>/fastcgi_temp</path>.
</tag-desc>

<tag-name>
<literal>--http-uwsgi-temp-path=<value>path</value></literal>
</tag-name>
<tag-desc>
defines a directory for storing temporary files
with data received from uwsgi servers.
After installation, the directory can always be changed in the
<path>nginx.conf</path> configuration file using the
<link doc="http/ngx_http_uwsgi_module.xml" id="uwsgi_temp_path"/>
directive.
By default the directory is named
<path><value>prefix</value>/uwsgi_temp</path>.
</tag-desc>

<tag-name>
<literal>--http-scgi-temp-path=<value>path</value></literal>
</tag-name>
<tag-desc>
defines a directory for storing temporary files
with data received from SCGI servers.
After installation, the directory can always be changed in the
<path>nginx.conf</path> configuration file using the
<link doc="http/ngx_http_scgi_module.xml" id="scgi_temp_path"/>
directive.
By default the directory is named
<path><value>prefix</value>/scgi_temp</path>.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name>
<literal>--without-http</literal>
</tag-name>
<tag-desc>
disables the <link doc="http/ngx_http_core_module.xml">HTTP</link> server.
</tag-desc>

<tag-name>
<literal>--without-http-cache</literal>
</tag-name>
<tag-desc>
disables HTTP cache.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name>
<literal>--with-mail</literal><br/>
<literal>--with-mail=dynamic</literal>
</tag-name>
<tag-desc>
enables POP3/IMAP4/SMTP
<link doc="mail/ngx_mail_core_module.xml">mail proxy</link> server.
</tag-desc>

<tag-name>
<literal>--with-mail_ssl_module</literal>
</tag-name>
<tag-desc>
enables building a module that adds the
<link doc="mail/ngx_mail_ssl_module.xml">SSL/TLS protocol support</link>
to the mail proxy server.
This module is not built by default.
The OpenSSL library is required to build and run this module.
</tag-desc>

<tag-name>
<literal>--without-mail_pop3_module</literal>
</tag-name>
<tag-desc>
disables the <link doc="mail/ngx_mail_pop3_module.xml">POP3</link> protocol
in mail proxy server.
</tag-desc>

<tag-name>
<literal>--without-mail_imap_module</literal>
</tag-name>
<tag-desc>
disables the <link doc="mail/ngx_mail_imap_module.xml">IMAP</link> protocol
in mail proxy server.
</tag-desc>

<tag-name>
<literal>--without-mail_smtp_module</literal>
</tag-name>
<tag-desc>
disables the <link doc="mail/ngx_mail_smtp_module.xml">SMTP</link> protocol
in mail proxy server.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name>
<literal>--with-stream</literal><br/>
<literal>--with-stream=dynamic</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="stream/ngx_stream_core_module.xml">stream module</link>
for generic TCP/UDP proxying and load balancing.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-stream_ssl_module</literal>
</tag-name>
<tag-desc>
enables building a module that adds the
<link doc="stream/ngx_stream_ssl_module.xml">SSL/TLS protocol support</link>
to the stream module.
This module is not built by default.
The OpenSSL library is required to build and run this module.
</tag-desc>

<tag-name>
<literal>--with-stream_realip_module</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="stream/ngx_stream_realip_module.xml">ngx_stream_realip_module</link>
module that changes the client address to the address
sent in the PROXY protocol header.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-stream_geoip_module</literal><br/>
<literal>--with-stream_geoip_module=dynamic</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="stream/ngx_stream_geoip_module.xml">ngx_stream_geoip_module</link>
module that creates variables depending on the client IP address
and the precompiled
<link url="http://www.maxmind.com">MaxMind</link> databases.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--with-stream_ssl_preread_module</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="stream/ngx_stream_ssl_preread_module.xml">ngx_stream_ssl_preread_module</link>
module that allows extracting information from the
<link url="https://datatracker.ietf.org/doc/html/rfc5246#section-7.4.1.2">ClientHello</link>
message without terminating SSL/TLS.
This module is not built by default.
</tag-desc>

<tag-name>
<literal>--without-stream_limit_conn_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="stream/ngx_stream_limit_conn_module.xml">ngx_stream_limit_conn_module</link>
module that limits the number of connections per key, for example,
the number of connections from a single IP address.
</tag-desc>

<tag-name>
<literal>--without-stream_access_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="stream/ngx_stream_access_module.xml">ngx_stream_access_module</link>
module that allows limiting access to certain client addresses.
</tag-desc>

<tag-name>
<literal>--without-stream_geo_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="stream/ngx_stream_geo_module.xml">ngx_stream_geo_module</link>
module that creates variables
with values depending on the client IP address.
</tag-desc>

<tag-name>
<literal>--without-stream_map_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="stream/ngx_stream_map_module.xml">ngx_stream_map_module</link>
module that creates variables
with values depending on values of other variables.
</tag-desc>

<tag-name>
<literal>--without-stream_split_clients_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="stream/ngx_stream_split_clients_module.xml">ngx_stream_split_clients_module</link>
module that creates variables for A/B testing.
</tag-desc>

<tag-name>
<literal>--without-stream_return_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="stream/ngx_stream_return_module.xml">ngx_stream_return_module</link>
module that sends some specified value to the client
and then closes the connection.
</tag-desc>

<tag-name>
<literal>--without-stream_set_module</literal>
</tag-name>
<tag-desc>
disables building the
<link doc="stream/ngx_stream_set_module.xml">ngx_stream_set_module</link>
module that sets a value for a variable.
</tag-desc>

<tag-name>
<literal>--without-stream_upstream_hash_module</literal>
</tag-name>
<tag-desc>
disables building a module that implements the
<link doc="stream/ngx_stream_upstream_module.xml" id="hash"/>
load balancing method.
</tag-desc>

<tag-name>
<literal>--without-stream_upstream_least_conn_module</literal>
</tag-name>
<tag-desc>
disables building a module that implements the
<link doc="stream/ngx_stream_upstream_module.xml" id="least_conn"/>
load balancing method.
</tag-desc>

<tag-name>
<literal>--without-stream_upstream_random_module</literal>
</tag-name>
<tag-desc>
disables building a module that implements the
<link doc="stream/ngx_stream_upstream_module.xml" id="random"/>
load balancing method.
</tag-desc>

<tag-name>
<literal>--without-stream_upstream_zone_module</literal>
</tag-name>
<tag-desc>
disables building a module that makes it possible to store run-time state
of an upstream group in a shared memory
<link doc="stream/ngx_stream_upstream_module.xml" id="zone"/>.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name>
<literal>--with-google_perftools_module</literal>
</tag-name>
<tag-desc>
enables building the
<link doc="ngx_google_perftools_module.xml">ngx_google_perftools_module</link>
module that enables profiling of nginx worker processes using
<link url="https://github.com/gperftools/gperftools">Google Performance Tools</link>.
The module is intended for nginx developers and is not built by default.
</tag-desc>

<tag-name>
<literal>--with-cpp_test_module</literal>
</tag-name>
<tag-desc>
enables building the
<literal>ngx_cpp_test_module</literal> module.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name>
<literal>--add-module=<value>path</value></literal>
</tag-name>
<tag-desc>
enables an external module.
</tag-desc>

<tag-name>
<literal>--add-dynamic-module=<value>path</value></literal>
</tag-name>
<tag-desc>
enables an external dynamic module.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name>
<literal>--with-compat</literal>
</tag-name>
<tag-desc>
enables dynamic modules compatibility.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name>
<literal>--with-cc=<value>path</value></literal>
</tag-name>
<tag-desc>
sets the name of the C compiler.
</tag-desc>

<tag-name>
<literal>--with-cpp=<value>path</value></literal>
</tag-name>
<tag-desc>
sets the name of the C preprocessor.
</tag-desc>

<tag-name>
<literal>--with-cc-opt=<value>parameters</value></literal>
</tag-name>
<tag-desc>
sets additional parameters that will be added to the CFLAGS variable.
When using the system PCRE library under FreeBSD,
<literal>--with-cc-opt="-I /usr/local/include"</literal>
should be specified.
If the number of files supported by <c-func>select</c-func> needs to be
increased it can also be specified here such as this:
<literal>--with-cc-opt="-D FD_SETSIZE=2048"</literal>.
</tag-desc>

<tag-name>
<literal>--with-ld-opt=<value>parameters</value></literal>
</tag-name>
<tag-desc>
sets additional parameters that will be used during linking.
When using the system PCRE library under FreeBSD,
<literal>--with-ld-opt="-L /usr/local/lib"</literal>
should be specified.
</tag-desc>

<tag-name>
<literal>--with-cpu-opt=<value>cpu</value></literal>
</tag-name>
<tag-desc>
enables building per specified CPU:
<literal>pentium</literal>, <literal>pentiumpro</literal>,
<literal>pentium3</literal>, <literal>pentium4</literal>,
<literal>athlon</literal>, <literal>opteron</literal>,
<literal>sparc32</literal>, <literal>sparc64</literal>,
<literal>ppc64</literal>.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name>
<literal>--without-pcre</literal>
</tag-name>
<tag-desc>
disables the usage of the PCRE library.
</tag-desc>

<tag-name>
<literal>--with-pcre</literal>
</tag-name>
<tag-desc>
forces the usage of the PCRE library.
</tag-desc>

<tag-name>
<literal>--with-pcre=<value>path</value></literal>
</tag-name>
<tag-desc>
sets the path to the sources of the PCRE library.
The library distribution needs to be downloaded from the
<link url="http://www.pcre.org">PCRE</link> site and extracted.
The rest is done by nginx’s <command>./configure</command> and
<command>make</command>.
The library is required for regular expressions support in the
<link doc="http/ngx_http_core_module.xml" id="location"/> directive
and for the
<link doc="http/ngx_http_rewrite_module.xml">ngx_http_rewrite_module</link>
module.
</tag-desc>

<tag-name>
<literal>--with-pcre-opt=<value>parameters</value></literal>
</tag-name>
<tag-desc>
sets additional build options for PCRE.
</tag-desc>

<tag-name>
<literal>--with-pcre-jit</literal>
</tag-name>
<tag-desc>
builds the PCRE library with
“just-in-time compilation” support (1.1.12, the
<link doc="ngx_core_module.xml" id="pcre_jit"/> directive).
</tag-desc>

<tag-name>
<literal>--without-pcre2</literal>
</tag-name>
<tag-desc>
disables use of the PCRE2 library
instead of the original PCRE library (1.21.5).
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name>
<literal>--with-zlib=<value>path</value></literal>
</tag-name>
<tag-desc>
sets the path to the sources of the zlib library.
The library distribution (version
1.1.3&mdash;1.2.11) needs to be downloaded from the
<link url="http://zlib.net">zlib</link> site and extracted.
The rest is done by nginx’s <command>./configure</command> and
<command>make</command>.
The library is required for the
<link doc="http/ngx_http_gzip_module.xml">ngx_http_gzip_module</link> module.
</tag-desc>

<tag-name>
<literal>--with-zlib-opt=<value>parameters</value></literal>
</tag-name>
<tag-desc>
sets additional build options for zlib.
</tag-desc>

<tag-name>
<literal>--with-zlib-asm=<value>cpu</value></literal>
</tag-name>
<tag-desc>
enables the use of the zlib assembler sources optimized
for one of the specified CPUs:
<literal>pentium</literal>, <literal>pentiumpro</literal>.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name>
<literal>--with-libatomic</literal>
</tag-name>
<tag-desc>
forces the libatomic_ops library usage.
</tag-desc>

<tag-name>
<literal>--with-libatomic=<value>path</value></literal>
</tag-name>
<tag-desc>
sets the path to the libatomic_ops library sources.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name>
<literal>--with-openssl=<value>path</value></literal>
</tag-name>
<tag-desc>
sets the path to the OpenSSL library sources.
</tag-desc>

<tag-name>
<literal>--with-openssl-opt=<value>parameters</value></literal>
</tag-name>
<tag-desc>
sets additional build options for OpenSSL.
</tag-desc>

</list>
</para>

<para>
<list type="tag">

<tag-name>
<literal>--with-debug</literal>
</tag-name>
<tag-desc>
enables the <link doc="debugging_log.xml">debugging log</link>.
</tag-desc>

</list>
</para>

<para>
Example of parameters usage (all of this needs to be typed in one line):
<programlisting>
./configure
    --sbin-path=/usr/local/nginx/nginx
    --conf-path=/usr/local/nginx/nginx.conf
    --pid-path=/usr/local/nginx/nginx.pid
    --with-http_ssl_module
    --with-pcre=../pcre2-10.39
    --with-zlib=../zlib-1.2.11
</programlisting>
</para>

<para>
After configuration,
nginx is compiled and installed using <command>make</command>.
</para>

</section>

</article>