从源代码构建nginx

使用configure命令配置构建。它定义了系统的各个方面,包括nginx允许使用的连接处理方法。最后它创建一个Makefile

`configure`命令支持以下参数:

--help
打印帮助消息。

--prefix=路径
定义一个保存服务器文件的目录。这个目录也将被用于configure设置的所有相对路径(除了库源路径)和nginx.conf配置文件中的所有相对路径。默认设置为/usr/local/nginx目录。
--sbin-path=路径
设置nginx可执行文件的名称。这个名称仅在安装时使用。默认情况下,文件名为prefix/sbin/nginx
--modules-path=路径
定义nginx动态模块将被安装的目录。默认情况下使用prefix/modules目录。
--conf-path=路径
设置nginx.conf配置文件的名称。如果需要,nginx始终可以通过在命令行参数-c 文件中指定不同的配置文件来启动。默认情况下,文件名为prefix/conf/nginx.conf
--error-log-path=路径
设置主要错误、警告和诊断文件的名称。安装后,始终可以在nginx.conf配置文件中使用error_log指令更改文件名。默认情况下,文件名为prefix/logs/error.log
--pid-path=路径
设置一个将存储主进程的进程ID的nginx.pid文件的名称。安装后,始终可以在nginx.conf配置文件中使用pid指令更改文件名。默认情况下,文件名为prefix/logs/nginx.pid
--lock-path=路径
设置锁文件名称的前缀。安装后,始终可以在nginx.conf配置文件中使用lock_file指令更改值。默认情况下,值为prefix/logs/nginx.lock

--user=名称
设置一个非特权用户的名称,其凭据将被工作进程使用。安装后,始终可以在nginx.conf配置文件中使用user指令更改名称。默认用户名为nobody。
--group=名称
设置一个组的名称,其凭据将被工作进程使用。安装后,始终可以在nginx.conf配置文件中使用user指令更改名称。默认情况下,组名设置为非特权用户的名称。

--build=名称
设置一个可选的nginx构建名称。
--builddir=路径
设置一个构建目录。

--with-select_module
--without-select_module
启用或禁用构建一个模块,该模块允许服务器使用 select() 方法工作。如果平台不支持更适当的方法,如kqueue、epoll或/dev/poll,此模块将自动构建。
--with-poll_module
--without-poll_module
启用或禁用构建一个模块,该模块允许服务器使用 poll() 方法工作。如果平台不支持更适当的方法,如kqueue、epoll或/dev/poll,此模块将自动构建。
--with-threads
启用使用线程池
--with-file-aio
在FreeBSD和Linux上启用异步文件I/O(AIO)。

--with-http_ssl_module
启用构建一个模块,为HTTP服务器添加HTTPS协议支持。默认情况下不构建此模块。构建和运行此模块需要OpenSSL库。
--with-http_v2_module
启用构建一个模块,提供对HTTP/2的支持。默认情况下不构建此模块。
--with-http_v3_module
启用构建一个模块,提供对HTTP/3的支持。默认情况下不构建此模块。建议使用提供HTTP/3支持的SSL库来构建和运行此模块,例如BoringSSLLibreSSLQuicTLS。否则,如果使用OpenSSL库,将使用不支持QUIC早期数据的OpenSSL兼容层。
--with-http_realip_module
启用构建ngx_http_realip_module模块,将客户端地址更改为指定头字段中发送的地址。默认情况下不构建此模块。
--with-http_addition_module
启用构建ngx_http_addition_module模块,可以在响应之前和之后添加文本。默认情况下不构建此模块。
--with-http_xslt_module
--with-http_xslt_module=dynamic
启用构建ngx_http_xslt_module模块,使用一个或多个XSLT样式表转换XML响应。默认情况下不构建此模块。需要libxml2libxslt库来构建和运行此模块。
--with-http_image_filter_module
--with-http_image_filter_module=dynamic
启用构建ngx_http_image_filter_module模块,可以转换JPEG、GIF、PNG和WebP格式的图像。默认情况下不构建此模块。
--with-http_geoip_module
--with-http_geoip_module=dynamic
启用构建ngx_http_geoip_module模块,根据客户端IP地址和预编译的MaxMind数据库创建变量。默认情况下不构建此模块。
--with-http_sub_module
启用构建ngx_http_sub_module模块,通过替换一个指定字符串来修改响应。默认情况下不构建此模块。
--with-http_dav_module
启用构建ngx_http_dav_module模块,通过WebDAV协议实现文件管理自动化。默认情况下不构建此模块。
--with-http_flv_module
启用构建ngx_http_flv_module模块,为Flash视频(FLV)文件提供伪流式传输服务器端支持。默认情况下不构建此模块。
--with-http_mp4_module
启用构建ngx_http_mp4_module模块,为MP4文件提供伪流式传输服务器端支持。默认情况下不构建此模块。
--with-http_gunzip_module
启用构建 ngx_http_gunzip_module 模块,用于解压那些不支持“gzip”编码方法的客户端的带有“Content-Encoding: gzip”标头的响应。此模块默认情况下未构建。
--with-http_gzip_static_module
启用构建 ngx_http_gzip_static_module 模块,该模块允许发送以“.gz”文件扩展名而不是常规文件的预压缩文件。此模块默认情况下未构建。
--with-http_auth_request_module
启用构建 ngx_http_auth_request_module 模块,该模块根据子请求的结果实现客户端授权。此模块默认情况下未构建。
--with-http_random_index_module
启用构建 ngx_http_random_index_module 模块,该模块处理以斜杠字符(‘/’)结尾的请求,并在目录中选择一个随机文件作为索引文件提供。此模块默认情况下未构建。
--with-http_secure_link_module
启用构建 ngx_http_secure_link_module 模块。此模块默认情况下未构建。
--with-http_degradation_module
启用构建 ngx_http_degradation_module 模块。此模块默认情况下未构建。
--with-http_slice_module
启用构建 ngx_http_slice_module 模块,该模块将请求分割成子请求,每个子请求返回一定范围的响应。该模块提供了更有效的大型响应缓存。此模块默认情况下未构建。
--with-http_stub_status_module
启用构建 ngx_http_stub_status_module 模块,该模块提供对基本状态信息的访问。此模块默认情况下未构建。

--without-http_charset_module
禁用构建 ngx_http_charset_module 模块,该模块会将指定的字符集添加到“Content-Type”响应头字段,并可以额外将数据从一个字符集转换为另一个字符集。
--without-http_gzip_module
禁用构建一个模块,用于压缩HTTP服务器的响应。构建和运行此模块需要 zlib 库。
--without-http_ssi_module
禁用构建 ngx_http_ssi_module 模块,该模块会在通过它的响应中处理SSI(服务器端包含)命令。
--without-http_userid_module
禁用构建 ngx_http_userid_module 模块,该模块设置适用于客户端标识的 cookie。
--without-http_access_module
禁用构建 ngx_http_access_module 模块,该模块允许限制对某些客户端地址的访问。
--without-http_auth_basic_module
禁用构建 ngx_http_auth_basic_module 模块,该模块允许通过验证用户名称和密码使用“HTTP基本身份验证”协议来限制对资源的访问。
--without-http_mirror_module
禁用构建 ngx_http_mirror_module 模块,该模块通过创建后台镜像子请求实现原始请求的镜像。
--without-http_autoindex_module
禁用构建 ngx_http_autoindex_module 模块,该模块处理以斜杠字符(‘/’)结尾的请求,并在 ngx_http_index_module 模块找不到索引文件时生成目录列表。
--without-http_geo_module
禁用构建 ngx_http_geo_module 模块,该模块根据客户端IP地址创建具有值的变量。
--without-http_map_module
禁用构建 ngx_http_map_module 模块,该模块根据其他变量的值创建具有值的变量。
--without-http_split_clients_module
禁用构建 ngx_http_split_clients_module 模块,该模块为A/B测试创建变量。
--without-http_referer_module
禁用构建 ngx_http_referer_module 模块,该模块可以阻止具有“Referer”头字段中无效值的请求访问站点。
--without-http_rewrite_module
禁用构建一个模块,允许HTTP服务器重定向请求并更改请求的URI。构建和运行此模块需要 PCRE 库。
--without-http_proxy_module
禁用构建HTTP服务器 代理模块
--without-http_fastcgi_module
禁用构建 ngx_http_fastcgi_module 模块,该模块将请求传递给FastCGI服务器。
--without-http_uwsgi_module
禁用构建 ngx_http_uwsgi_module 模块,该模块将请求传递给uwsgi服务器。
--without-http_scgi_module
禁用构建传递请求到SCGI服务器的ngx_http_scgi_module模块。
--without-http_grpc_module
禁用构建传递请求到gRPC服务器的ngx_http_grpc_module模块。
--without-http_memcached_module
禁用构建从memcached服务器获取响应的ngx_http_memcached_module模块。
--without-http_limit_conn_module
禁用构建限制每个键的连接数的ngx_http_limit_conn_module模块,例如,来自单个IP地址的连接数。
--without-http_limit_req_module
禁用构建限制每个键的请求处理速率的ngx_http_limit_req_module模块,例如,来自单个IP地址的请求处理速率。
--without-http_empty_gif_module
禁用构建一个发出单像素透明GIF的模块emits single-pixel transparent GIF
--without-http_browser_module
禁用构建创建变量的模块,其值取决于“User-Agent”请求头字段值的ngx_http_browser_module模块。
--without-http_upstream_hash_module
禁用构建实现hash负载均衡方法的模块。
--without-http_upstream_ip_hash_module
禁用构建实现ip_hash负载均衡方法的模块。
--without-http_upstream_least_conn_module
禁用构建实现least_conn负载均衡方法的模块。
--without-http_upstream_random_module
禁用构建实现random负载均衡方法的模块。
--without-http_upstream_keepalive_module
禁用构建提供向上游服务器的连接缓存的模块。
--without-http_upstream_zone_module
禁用构建使得可以在共享内存zone中存储上游组的运行时状态的模块。

--with-http_perl_module
--with-http_perl_module=dynamic
启用构建嵌入式Perl模块。此模块默认不会构建。
--with-perl_modules_path=路径
定义一个目录,用于存放Perl模块。
--with-perl=路径
设置Perl二进制文件的名称。

--http-log-path=路径
设置HTTP服务器的主请求日志文件的名称。安装后,始终可以在nginx.conf配置文件中使用access_log指令更改文件名。默认情况下,文件名为前缀/logs/access.log
--http-client-body-temp-path=路径
定义用于存储保存客户端请求主体的临时文件的目录。安装后,始终可以在nginx.conf配置文件中使用client_body_temp_path指令更改目录。默认情况下,目录名为前缀/client_body_temp
--http-proxy-temp-path=路径
定义用于存储从代理服务器接收到的数据的临时文件的目录。安装后,始终可以在nginx.conf配置文件中使用proxy_temp_path指令更改目录。默认情况下,目录名为前缀/proxy_temp
--http-fastcgi-temp-path=路径
定义用于存储从FastCGI服务器接收到的数据的临时文件的目录。安装后,始终可以在nginx.conf配置文件中使用fastcgi_temp_path指令更改目录。默认情况下,目录名为前缀/fastcgi_temp
--http-uwsgi-temp-path=路径
定义用于存储从uwsgi服务器接收到的数据的临时文件的目录。安装后,始终可以在nginx.conf配置文件中使用uwsgi_temp_path指令更改目录。默认情况下,目录名为前缀/uwsgi_temp
--http-scgi-temp-path=路径
定义用于存储从SCGI服务器接收到的数据的临时文件的目录。安装后,始终可以在nginx.conf配置文件中使用scgi_temp_path指令更改目录。默认情况下,目录名为前缀/scgi_temp

--without-http
禁用HTTP服务器。
--without-http-cache
禁用HTTP缓存。

--with-mail
--with-mail=dynamic
启用 POP3/IMAP4/SMTP 邮件代理服务器。
--with-mail_ssl_module
启用构建一个模块,该模块将 SSL/TLS 协议支持添加到邮件代理服务器中。默认不构建此模块。构建和运行此模块需要 OpenSSL 库。
--without-mail_pop3_module
禁用邮件代理服务器中的 POP3 协议。
--without-mail_imap_module
禁用邮件代理服务器中的 IMAP 协议。
--without-mail_smtp_module
禁用邮件代理服务器中的 SMTP 协议。

--with-stream
--with-stream=dynamic
启用构建stream模块,用于通用的TCP/UDP代理和负载均衡。默认情况下不会构建此模块。
--with-stream_ssl_module
启用构建一个模块,为stream模块添加SSL/TLS协议支持。默认情况下不会构建此模块。需要OpenSSL库来构建和运行此模块。
--with-stream_realip_module
启用构建ngx_stream_realip_module模块,该模块将客户端地址更改为PROXY协议头中发送的地址。默认情况下不会构建此模块。
--with-stream_geoip_module
--with-stream_geoip_module=dynamic
启用构建ngx_stream_geoip_module模块,根据客户端IP地址和预编译的MaxMind数据库创建变量。默认情况下不会构建此模块。
--with-stream_ssl_preread_module
启用构建ngx_stream_ssl_preread_module模块,允许从ClientHello消息中提取信息,而无需终止SSL/TLS。默认情况下不会构建此模块。
--without-stream_limit_conn_module
禁用构建ngx_stream_limit_conn_module模块,该模块限制每个键的连接数,例如来自单个IP地址的连接数。
--without-stream_access_module
禁用构建ngx_stream_access_module模块,该模块允许限制对某些客户端地址的访问。
--without-stream_geo_module
禁用构建ngx_stream_geo_module模块,该模块根据客户端IP地址创建具有特定值的变量。
--without-stream_map_module
禁用构建ngx_stream_map_module模块,该模块根据其他变量的值创建具有特定值的变量。
--without-stream_split_clients_module
禁用构建ngx_stream_split_clients_module模块,该模块为A/B测试创建变量。
--without-stream_return_module
禁用构建ngx_stream_return_module模块,该模块向客户端发送指定的值,然后关闭连接。
--without-stream_set_module
禁用构建ngx_stream_set_module模块,该模块为变量设置值。
--without-stream_upstream_hash_module
禁用构建实现hash负载均衡方法的模块。
--without-stream_upstream_least_conn_module
禁用构建实现least_conn负载均衡方法的模块。
--without-stream_upstream_random_module
禁用构建实现random负载均衡方法的模块。
--without-stream_upstream_zone_module
Certainly! Here's the translated HTML snippet:
禁用构建一个模块,该模块使得可以在共享内存区域中存储上游组的运行时状态。
I've translated "module", "store", "run-time state", "upstream group", and "shared memory zone" to their Chinese counterparts while keeping the HTML structure intact.

--with-google_perftools_module
启用构建 ngx_google_perftools_module 模块,该模块允许使用 Google 性能工具对 Nginx 工作进程进行分析。该模块面向 Nginx 开发人员,默认不构建。
--with-cpp_test_module
启用构建 ngx_cpp_test_module 模块。

--add-module=路径
启用一个外部模块。
--add-dynamic-module=路径
启用一个外部动态模块。

--with-compat
启用动态模块兼容性。

--with-cc=路径
设置 C 编译器的名称。
--with-cpp=路径
设置 C 预处理器的名称。
--with-cc-opt=参数
设置将添加到 CFLAGS 变量中的其他参数。在 FreeBSD 上使用系统 PCRE 库时,应该指定 --with-cc-opt="-I /usr/local/include"。如果需要增加 select() 支持的文件数量,也可以在这里指定,例如:--with-cc-opt="-D FD_SETSIZE=2048"
--with-ld-opt=参数
设置在链接期间使用的额外参数。在 FreeBSD 上使用系统 PCRE 库时,应该指定 --with-ld-opt="-L /usr/local/lib"
--with-cpu-opt=CPU
启用根据指定的 CPU 构建:pentiumpentiumpropentium3pentium4athlonopteronsparc32sparc64ppc64

--without-pcre
禁用 PCRE 库的使用。
--with-pcre
强制使用 PCRE 库。
--with-pcre=path
设置 PCRE 库源代码的路径。库分发需要从 PCRE 站点下载并提取。其余工作由 nginx 的 ./configuremake 完成。该库在 location 指令中用于正则表达式支持,以及 ngx_http_rewrite_module 模块中需要。
--with-pcre-opt=parameters
设置 PCRE 的额外构建选项。
--with-pcre-jit
使用“即时编译”支持构建 PCRE 库(1.1.12,pcre_jit 指令)。
--without-pcre2
禁用 PCRE2 库,而不是原始 PCRE 库(1.21.5)。

--with-zlib=path
设置 zlib 库源代码的路径。库分发(版本 1.1.3 — 1.3)需要从 zlib 站点下载并提取。其余工作由 nginx 的 ./configuremake 完成。该库在 ngx_http_gzip_module 模块中需要。
--with-zlib-opt=parameters
设置 zlib 的额外构建选项。
--with-zlib-asm=cpu
启用针对指定 CPU 中的一个优化的 zlib 汇编源码的使用: pentiumpentiumpro

--with-libatomic
强制使用 libatomic_ops 库。
--with-libatomic=path
设置 libatomic_ops 库源代码的路径。

--with-openssl=path
设置 OpenSSL 库源代码的路径。
--with-openssl-opt=parameters
设置 OpenSSL 的额外构建选项。

--with-debug
启用 调试日志

参数使用示例(所有内容需要在一行中输入):

./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.3

配置完成后,使用 make 编译和安装 nginx。