nginx编译模块详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx编译模块详解相关的知识,希望对你有一定的参考价值。

nginx1.15.1配置:
configure命令支持以下参数:

--prefix=path        指定安装目录
--sbin-path=path     默认可执行文件的路径。
--modules-path=path  定义一个将安装nginx动态模块的目录
--conf-path=path     设置nginx.conf配置文件的名称,可以使用-c 选项指定nginx.conf启动nginx.
--http-log-path=path  访问日志的路径。
--error-log-path=path  错误日志的路径。
--pid-path=path        设置将存储主进程的进程ID的nginx.pid文件的名称
--lock-path=path       设置lock文件的路径。
--user=username        设置其凭据将由工作进程使用的非特权用户的名称
--group=groupname      设置工作进程将使用其凭据的组的名称
 
--with-select_module    启用构建允许服务器使用该模块的模块
--without-select_module 禁用构建允许服务器使用该模块的模块

--with-poll_module      启用构建允许服务器使用该模块的模块
--without-poll_module   禁用构建允许服务器使用该模块的模块

--with-threads  可以使用线程池。
--with-file-aio  启用异步文件I/O(AIO)

--with-http_ssl_module   
可以构建一个将HTTP协议支持添加到HTTP服务器的模块。
OpenSSL库是构建和运行该模块所必需的

--with-http_v2_module  启用支持http2的模块。

--with-http_realip_module  可以构建ngx_http_realip_module模块,
获取真实客户端IP。

--with-http_image_filter_module
--with-http_image_filter_module=dynamic
可以构建用于转换JPEG,GIF,PNG和WebP格式图像的ngx_http_image_filter_module模块。

--with-http_geoip_module
--with-http_geoip_module=dynamic
可以构建根据客户端IP地址和预编译的MaxMind数据库创建变量的ngx_http_geoip_module模块。

--with-http_sub_module
通过将一个指定的字符串替换为另一个指定的字符串,可以构建修改响应的ngx_http_sub_module模块。该模块不是默认生成的。

--with-http_addition_module 
可以构建在响应之前和之后添加文本的ngx_http_addition_module模块。

--with-http_xslt_module
--with-http_xslt_module=dynamic
可以构建使用一个或多个XSLT样式表转换XML响应的ngx_http_xslt_module模块。
该模块不是默认生成的。 libxml2和libxslt库是构建和运行该模块所必需的

--with-http_dav_module
可以构建通过WebDAV协议提供文件管理自动化的ngx_http_dav_module模块。该模块不是默认生成的。

--with-http_flv_module
可以构建为Flash视频(FLV)文件提供伪流式服务器端支持的ngx_http_flv_module模块。该模块不是默认生成的。

--with-http_mp4_module
可以构建为MP4文件提供伪流式服务器端支持的ngx_http_mp4_module模块。该模块不是默认生成的。

--with-http_gunzip_module
可以为不支持“gzip”编码方法的客户端构建用于解压缩响应的“ngx_http_gunzip_module”模块,
其内容为“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
禁止构建处理SSI(服务器端包含)命令的ngx_http_ssi_module模块通过它传递的响应。

--without-http_userid_module
禁用构建将cookie设置为适合客户端标识的ngx_http_userid_module模块。

--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
禁用构建为A / B测试创建变量的ngx_http_split_clients_module模块

--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
禁用构建将请求传递给FastCGI服务器的ngx_http_fastcgi_module模块。

--without-http_uwsgi_module
禁用构建将请求传递给uwsgi服务器的ngx_http_uwsgi_module模块

--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的模块

--without-http_browser_module
禁用构建ngx_http_browser_module模块,该模块创建值取决于“User-Agent”请求标头字段值的变量。

--without-http_upstream_hash_module
禁用构建实现散列负载平衡方法的模块

--without-http_upstream_ip_hash_module
禁用构建实现ip_hash负载平衡方法的模块。


--without-http_upstream_least_conn_module
禁用构建实现least_conn负载平衡方法的模块

--without-http_upstream_random_module 

--without-http_upstream_keepalive_module
禁用构建一个提供到上游服务器的连接缓存的模块

--without-http_upstream_zone_module
禁用构建一个模块,以便将上游组的运行时状态存储在共享内存区中


--with-http_perl_module
--with-http_perl_module=dynamic
以构建嵌入式Perl模块。该模块不是默认生成的。

--with-perl_modules_path=path
定义一个将保留Perl模块的目录
 
 --with-perl=PATH  
 定义perl的二进制路径

--http-log-path=path
设置HTTP服务器的主要请求日志文件的名称。安装完成后,可以使用access_log指令始终在nginx.conf配置文件中更改文件名。默认情况下该文件被命名access.log


--without-http
disables the HTTP server.

--without-http-cache
disables HTTP cache.

--with-stream
--with-stream=dynamic
可以为通用TCP / UDP代理和负载平衡构建流模块。该模块不是默认生成的。

--with-stream_ssl_module
可以构建一个将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
禁用构建为A / B测试创建变量的ngx_stream_split_clients_module模块

--without-stream_return_module
禁用构建向客户端发送一些指定值的ngx_stream_return_module模块,然后关闭连接


--without-stream_upstream_hash_module
禁用构建实现散列负载平衡方法的模块。

--without-stream_upstream_least_conn_module
禁用构建实现least_conn负载平衡方法的模块

--without-stream_upstream_zone_module
禁用构建一个模块,以便将上游组的运行时状态存储在共享内存区中


--with-google_perftools_module
启用构建ngx_google_perftools_module模块,该模块可使用Google Performance Tools对nginx工作进程进行分析。该模块专供nginx开发人员使用,并且不是默认生成的

--with-cpp_test_module
可以构建ngx_cpp_test_module模块

--add-module=path   启用外部模块。

--add-dynamic-module=path   启用外部动态模块
--with-compat   启用动态模块兼容性。

--with-cc=path  设置C编译器的名称
--with-cpp=path    设置C预处理器的名称。

--with-cc-opt=OPTIONS   
设置将被添加到CFLAGS变量的附加参数。在FreeBSD下使用系统PCRE库时,应指定--with-cc-opt =“ - I / usr / local / include”。如果select()支持的文件数量需要增加,那么也可以在这里指定如下:--with-cc-opt =“ - D FD_SETSIZE = 2048

--with-ld-opt=OPTIONS
设置将在链接期间使用的其他参数。在FreeBSD下使用系统PCRE库时,应指定--with-ld-opt =“ - L / usr / local / lib”。

--with-cpu-opt=cpu
能够由CPU指定的建设:英特尔pentiumpro,pentium3,奔腾4,速龙,皓龙,不再获得,SPARC64,PPC64。

--without-pcre   禁用PCRE库的使用
--with-pcre      强制使用PCRE库。

--with-pcre=path   将路径设置为PCRE库的源。图书馆发行版(版本4.4 - 8.41)需要从PCRE网站下载并提取。其余的由nginx的./configure和make完成。该库是位置指令和ngx_http_rewrite_module模块支持正则表达式所必需的

--with-pcre-opt=OPTIONS
为PCRE设置了额外的构建选项

--with-pcre-jit
使用“即时编译”支持(1.1.12,pcre_jit指令)构建PCRE库。

--with-zlib=path  
将路径指向zlib库的来源。库分发(版本1.1.3 - 1.2.11)需要从zlib站点下载并解压缩。其余的由nginx的./configure和make完成。该库是ngx_http_gzip_module模块所必需的

--with-zlib-opt=OPTIONS
为zlib设置其他构建选项。

--with-zlib-asm=cpu
可以使用针对指定CPU之一优化的zlib汇编源代码:pentium,pentiumpro。

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

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


以上是关于nginx编译模块详解的主要内容,如果未能解决你的问题,请参考以下文章

Nginx—— sub_module模块详解

NGINX源码安装配置详解(./configure),最全解析

Nginx—— random_index模块详解

Nginx—— stub_status模块详解

Nginx编译配置脚本篇- 模块配置脚本auto/modules

nginx状态模块详解及实战