nginx源码安装./configure常见参数详解

参考地址

官方参考地址 http://nginx.org/en/docs/configure.html

其他参考地址 https://blog.csdn.net/zhangman0702/article/details/93628954

一 configure常用参数

1 常规类参数

##nginx安装目录
##默认/usr/local/nginx/
--prefix=PATH

##可执行文件路径(即nginx命令路径)
##默认prefix/sbin/nginx
--sbin-path=PATH

##模块的安装目录
##默认prefix/modules
--modules-path=PATH

##配置文件
##默认prefix/conf/nginx.conf
--conf-path=PATH

##错误日志文件
##默认prefix/logs/error.log
--error-log-path=PATH

##pid文件
##默认prefix/logs/nginx.pid
--pid-path=PATH

##锁文件,NGINX运行时会自动创建该文件,一台服务器上只允许运行一个NGINX服务
##默认prefix/logs/nginx.lock
--lock-path=PATH

##HTTP服务器的主请求日志文件
##默认prefix/logs/access.log
--http-log-path=PATH

##用于存储包含客户端请求主体的临时文件目录
##默认prefix/client_body_temp
--http-client-body-temp-path=PATHDIR

##用于存储从代理服务器接收到的数据的临时文件目录
##默认prefix/proxy_temp
--http-proxy-temp-path=PATHDIR

##用于存储从FastCGI服务器接收到的数据的临时文件目录
##默认prefix/fastcgi_temp
--http-fastcgi-temp-path=PATHDIR

##用于存储从uwsgi服务器接收到的数据的临时文件目录
##默认prefix/uwsgi_temp
--http-uwsgi-temp-path=PATHDIR

##用于存储从SCGI服务器接收到的数据的临时文件目录
##默认prefix/scgi_temp
--http-scgi-temp-path=PATHDIR

##运行nginx的用户
##默认nobody
--user=USERNAME

##运行nginx的用户组
--group=GROUPNAME
##添加第三方模块
--add-module=PATHDIR

2 依赖类参数

##设置gcc编译器目录
##一般不用设置
--with-cc=PATHDIR

##设置gcc-c++编译器目录
##一般不用设置
--with-cpp=PATHDIR

##传到C编译器命令行的其他选项
–with-cc-opt=

##传到C链接器命令行的其他选项
–with-ld-opt=

##设置CPU型号
##为特定的CPU执行编译操作,有效的值:pentium, pentiumpro, pentium3, pentium4, athlon, opteron, sparc32, sparc64,ppc64。
--with-cpu-opt=CPU

##设置pcre库
##只供源码安装的pcre使用
--with-pcre=PATHDIR

##设置MD5库
##只供源码安装的MD5使用
–with-md5=PATHDIR

##设置zlib库
##只供源码安装的zlib使用
--with-zlib=PATHDIR

##设置OpenSSL库
##只供源码安装的OpenSSL使用
--with-openssl=PATHDIR

3 默认禁用模块参数的启用

3.1 默认禁用模块参数之常规参数的启用

##启用select事件驱动模型
##默认情况下在Linux2.6以上的内核版本中,Nginx支持使用Epoll高效的事件模型,可在配置文件中使用"use epoll"开启
--with-select_module

##启用poll事件驱动模型
##默认情况下在Linux2.6以上的内核版本中,Nginx支持使用Epoll高效的事件模型,可在配置文件中使用"use epoll"开启
--with-poll_module 

##启用线程池功能
##一般情况下主机有几核处理器在启动Nginx时就会创建几个Worker工作进程
--with-threads

##启用异步文件I/O支持
##一般用于大文件传输的场景下
##可能会报错,请谨慎使用
--with-filr-aio

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

3.2 默认禁用模块参数之stream相关参数的启用

##启用Stream_Core模块,nginx的核心模块
##用于实现TCP/UDP代理和四层负载均衡
##默认不启用,nginx1.9.0版本开始使用
--with-stream

##启用Stream_SSL模块
##提供SSL/TLS协议支持
##默认不启用,需要安装OpenSSL依赖,需要启用--with-stream模块
--with-stream_ssl_module

##启用Stream_Realip模块
##用于修改客户端请求头中的客户端IP值,一般用于反向代理中,将真实的客户端IP传送给后端的应用服务器
##默认不启用,需要启用--with-stream模块
--with-stream_realip_module

3.3默认禁用模块参数之HTTP相关参数的启用

##启用HTTPS模块
##用于构建HTTPS服务
##默认未启用,需要安装OpenSSL依赖
--with-http_ssl_module

##启用HTTP_V2模块
##新HTTP协议,比HTTP1好
##默认未启用
--with-http_v2_module

##启用HTTP_Realip模块
##用于修改请求头中客户端IP值,将真实的客户端IP传送给后端客户端
##默认未启用
--with-http_realip_module

##启用HTTP_Addition模块
##用于在响应之后和之前添加文本
##默认未启用
--with-http_addition_module

##启用HTTP_Xslt模块
##过滤器,通过一个或多个XSLT样式表转换XML响应
##也可使用动态模块即--with-http_geoip_module=dynamic
##默认未启用,需要安装libxml2和libxslt依赖
--with-http_xslt_module

##启用HTTP_Image_Filter模块
##集成图片处理器,可以转换JPEG,GIF,PNG和WebP格式的图像
##也可以使用动态模块即--with-http_image_filter_module=dynamic
##默认未启用
--with-http_image_filter_module

##启用HTTP_Geoip模块
##根据客户端IP地址得到其所在国家,处理来自不同地区的访问
##也可使用动态模块即--with-http_geoip_module=dynamic
##默认未启用,需要安装MaxMind GeoIP依赖
--with-http_geoip_module

##启用HTTP_Sub模块
##用于修改响应内容,将一个指定的字符串替换为另一个指定的字符串
##默认未启用
--with-http_sub_module

##启用HTTP_DAV模块
##通过WebDAV协议提供文件管理自动化,类似WEB文件管理器,对服务器文件进行管理
##默认未启用
--with-http_dav_module

##启用HTTP_FLV模块
##为Flash Video(FLV)文件提供伪流服务器端支持,允许在网页上播放FLV格式的视频
##默认未启用
--with-http_flv_module

##启用HTTP_MP4模块
##为MP4文件提供伪流服务器端支持,允许在网页上播放MP4格式的视频
##默认未启用
--with-http_mp4_module
##启用HTTP_Gunzip模块
##用于为不支持"gzip"编码方式的客户端解压响应,服务器会本地解压数据,将数据传送给浏览器客户端
##默认未启用
--with-http_gunzip_module

##启用HTTP_Gzip_Static模块
##用于将静态内容压缩成".gz"为扩展名的预压缩文件,缓存在本地并在响应时发送
##默认未启用
--with-http_gzip_static_module

##启用HTTP_Auth_Request模块
##请求验证,基于子请求的结果实现客户端授权,若子请求返回的状态码为200,则允许访问,若返回401或403,则拒绝访问
##默认未启用
--with-http_auth_request_module

##启用HTTP_Random_Index模块
##处理以斜杠(' /')结尾的请求,从目录中选择一个随机文件作为索引文件
##默认未启用
--with-http_random_index_module

##启用HTTP_Secure_Link模块
##防盗链模块,用于检查请求链接的权限以及是否过期,多用于文件下载防盗链
##默认未启用
--with-http_secure_link_module

##启用HTTP_Degradation模块
##用于当主机剩余内存较低时,用户请求访问时Nginx会对某些"location"的请求返回204或444的响应码
##默认未启用
--with-http_degradation_module

##启用HTTP_Slice模块
##将请求拆分为子请求,每个子请求返回一定范围的响应
##默认未启用
--with-http_slice_module

##启用HTTP_Stub_Status模块
##提供对基本状态信息的访问,管理员访问这个页面可以获取基本信息,一般用于监控nginx的运行状态
##默认未启用
--with-http_stub_status_module

3.4默认禁用模块参数之Mail相关参数的启用

##启用POP3/IMAP4/SMTP邮件代理服务器
##也可以使用动态模块即 --with-mail=dynamic
##默认不启用
--with-mail

##启用Mail_SSL模块
##设置邮件代理服务器支持SSL/TLS协议
##默认不启用,需要安装OpenSSL依赖
--with-mail_ssl_module

4 默认启用模块参数的禁用

4.1 默认启用模块参数之stream相关参数的禁用

##禁用Stream_Limit_Conn模块
##用于Nginx四层负载功能中限制并发连接数量以及下载带宽限制功能
##当开启Stream_Core模块时自动开启此功能,不建议禁用
--without-stream_limit_conn_module

##禁用Stream_Access模块
##用于Nginx四层负载功能中限制对某些客户端地址的访问
##当开启Stream_Core模块时自动开启此功能,不建议禁用
--without-stream_access_module

##禁用Stream_Geo模块
##用于Nginx四层负载功能中从指定变量中获取客户端的IP地址,并将其嵌入到另外一个变量中
##默认情况下从"$remote_addr"变量中取得客户端的IP地址
##当开启Stream_Core模块时自动开启此功能,不建议禁用
--without-stream_geo_module

##禁用Stream_Map模块
##用于Nginx四层负载功能中创建变量,但创建的变量的值取决于其他变量的值
##当开启Stream_Core模块时自动开启此功能,不建议禁用
--without-stream_map_module

##禁用Stream_Splic_Clients模块
##用于Nginx四层负载功能中创建适用于A/B测试的变量
##当开启Stream_Core模块时自动开启此功能。
--without-stream_split_clients_module

##禁用Stream_Return模块
##用于Nginx四层负载功能中向客户端发送指定值,然后关闭连接
##当开启Stream_Core模块时自动开启此功能,不建议禁用
--without-stream_return_module
 
##禁用Stream_Upstream_Hash模块
##提供四层负载均衡的一种调度方法,一般用于基于SessionID的会话保持场景下
##当开启Stream_Core模块时自动开启此功能,不建议禁用
--without-stream_upstream_hash_module

##禁用Stream_Upstream_IP_Hash模块
##提供四层负载均衡的一种调度方法,基于来源IP的会话保持方法,不过它是基于客户端IP的Hash方法,客户端可能受动态IP影响会发生变化
##一般很少采用
##当开启Stream_Core模块时自动开启此功能。
--without-stream_upstream_least_conn_module 

##禁用Stream_Upstream_Zone模块
##用于Nginx四层负载功能,可以将由"Upstream"指令定义的服务器组运行时的状态存储在共享内存区域中
##当开启Stream_Core模块时自动开启此功能
--without-stream_upstream_zone_module

4.2 默认启用模块参数之HTTP相关参数的禁用

##禁用HTTP_Core模块
##为Nginx的核心模块,用于提供HTTP服务所有核心功能
##不建议禁用
--without-http

##禁用HTTP缓存
--without-http-cache

##禁用HTTP_Charset模块
##用于将指定的字符集添加到"Content-Type"响应头字段中,以及将数据从一个字符集转换为另一个字符集
##用于字符集设置,不建议禁用
--without-http_charset_module

##禁用HTTP_Gzip模块
##此模块用于HTTP响应内容传输压缩,可以将响应内存在传输时将其压缩成Gzip编码格式的响应传送给客户端
##使用Gzip编码格式响应内容体积会变小,会提高传输效率,不建议禁用
--without-http_gzip_module

##禁用HTTP_SSI模块
##过滤器,用于处理通过它响应中的SSI(Server Side Includes)命令
--without-http_ssi_module

##禁用HTTP_Userid模块
##用于设置适用于客户端标识的Cookie
--without-http_userid_module

##禁用HTTP_Access模块
##用于限制对某些客户端地址的访问,Allow or Deny
##不建议禁用
--without-http_access_module

##禁用HTTP_Auth_Basic模块
##用于HTTP基本身份验证,使用用户名和密码来限制对资源的访问
--without-http_auth_basic_module

##禁用HTTP_Mirror模块
##用于将正式环境的流量拷贝到镜像(测试)环境下,一般用于测试环境引入真实环境的流量实现对测试环境的压力测试
--without-http_mirror_module

##禁用HTTP_Autoindex模块
##用于在处理以斜杠字符('/')结尾的请求,并在找不到索引文件的情况下生成目录列表
--without-http_autoindex_module

##禁用HTTP_Geo模块
##用于从指定变量中获取客户端的IP地址,并将其嵌入到另外一个变量中
--without-http_geo_module

##禁用HTTP_Map模块
##用于创建变量,但创建的变量的值取决于其他变量的值
--without-http_map_module

##禁用HTTP_Splic_Clients模块
##用于创建适用于A/B测试的变量
##AB测试也称之为拆分测试:将一个项目的两个不同版本发布,用户喜欢哪个版本就发布哪个版本
--without-http_split_clients_module

##禁用HTTP_Referer模块
##用于防盗链,用于阻止对请求头部"referer"字段具有无效值的请求访问
--without-http_referer_module

##禁用HTTP_Rewerte模块
##用于地址重写,用于将来源请求地址重定向到指定的地址上,可以保护真实的地址,增加安全性
##需要安装pcre依赖,不建议禁用
--without-http_rewrite_module

##禁用HTTP_Proxy模块
##用于将请求代理传递到另外一台WEB服务器去处理
##Nginx的核心模块,不建议禁用
--without-http_proxy_module

##禁用HTTP_FastCGI模块
##用于将请求代理传递到另外一台FastCGI服务器去处理,一般用于反代PHP
##不建议禁用
--without-http_fastcgi_module

##禁用HTTP_UwSGI模块
##用于将请求代理传递给另外一台UwSGI服务器去处理
--without-http_uwsgi_module

##禁用HTTP_SCGI模块
##用于将请求代理传递给另外一台SCGI服务器去处理
--without-http_scgi_module

##禁用HTTP_Grpc模块
##用于将请求代理传递给另外一台Grpc服务器去处理
--without-http_grpc_module

##用HTTP_Memcached模块
##用于Nginx从Memcached服务器获取响应内容
##一般用于Nginx+后端服务器+Memcached的环境下
##Memcached缓存服务器是基于内存的所以可以减少磁盘IO的使用,提高响应效率
--without-http_memcached_module

##禁用HTTP_Limit_Conn模块
##用于限制并发连接数量以及下载带宽限制
--without-http_limit_conn_module

##禁用HTTP_Limit_Req模块
##用于限制请求数量,可以限制请求的频率
--without-http_limit_req_module

##禁用HTTP_Empty_Gif模块
##会在内容中常驻的一个1X1的透明空白的GIF图像,当用户请求时,返回该图像,一般用于测试
--without-http_empty_gif_module

##禁用HTTP_Browser模块
##用于创建变量,变量的值取决于请求头中"user-agent"的值
##一般用于区别新式或者旧式浏览器
--without-http_browser_module

##禁用HTTP_Upstream_Hash模块
##提供了由"Upstream"指令定义的一组服务器的负载均衡方法"Hash"
##会话保持
##不建议禁用
--without-http_upstream_hash_module

##禁用HTTP_Upstream_IP_Hash模块
##提供了由"Upstream"指令定义的一组服务器的负载均衡方法"ip_hash"
##用于会话保持,不过它是基于客户端IP的Hash方法,客户端可能受动态IP影响会发生变化
##一般不建议采用
--without-http_upstream_ip_hash_module

##禁用HTTP_Upstream_Least_Conn模块
##提供了由"Upstream"指令定义的一组服务器的负载均衡方法"least_conn"
##用于将请求传递到具有最少活动连接、权重较高(性能最好)的后端服务器上去处理。
--without-http_upstream_least_conn_module

##禁用HTTP_Upstream_Keepalive模块
##可以为由"Upstream"指令定义的一组服务器提供保持长连接的功能
##使用它则会为每个Worker工作进程与后端服务器保持空闲的长连接,连接数由"keepalive"指令指定
##当空闲的长连接数量超过指定值时,将关闭最近最少使用的连接
--without-http_upstream_keepalive_module

##用HTTP_Upstream_Zone模块
##可以将由"Upstream"指令定义的服务器组运行时的状态存储在共享内存区域中
--without-http_upstream_zone_module

4.3 默认启用模块参数之Mail相关参数的禁用

##禁用Mail_POP3模块
##当启用HTTP_Mail_Core模块时,若不想使用POP3协议,则可以考虑单独禁用此模块
##不建议禁用
--without-mail_pop3_module
 
##禁用Mail_IMAP模块
##当启用HTTP_Mail_Core模块时,若你不想使用IMAP4协议,则可以考虑单独禁用此模块
##不建议禁用
--without-mail_imap_module
 
##禁用Mail_SMTP模块
##当启用HTTP_Mail_Core模块时,若你不想使用SMTP协议,则可以考虑单独禁用此模块
##不建议禁用
--without-mail_smtp_module

二 配置示例

./configure\

--prefix=/etc/nginx\

--sbin-path=/usr/sbin/nginx\

--modules-path=/usr/lib/nginx/modules\

--conf-path=/etc/nginx/nginx.conf\

--error-log-path=/var/log/nginx/error.log\

--http-log-path=/var/log/nginx/access.log\

--pid-path=/var/run/nginx.pid\

--lock-path=/var/run/nginx.lock\

--http-client-body-temp-path=/var/cache/nginx/client_temp\

--http-proxy-temp-path=/var/cache/nginx/proxy_temp\

--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp\

--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp\

--http-scgi-temp-path=/var/cache/nginx/scgi_temp\

--user=nginx\

--group=nginx\

--with-compat\

--with-threads\

--with-http_addition_module\

--with-http_auth_request_module\

--with-http_dav_module\

--with-http_flv_module\

--with-http_gunzip_module\

--with-http_gzip_static_module\

--with-http_mp4_module\

--with-http_random_index_module\

--with-http_realip_module\

--with-http_secure_link_module\

--with-http_slice_module\

--with-http_ssl_module \

--with-http_stub_status_module\

--with-http_sub_module\

--with-http_v2_module\

--with-mail\

--with-mail_ssl_module\

--with-stream\

--with-stream_realip_module\

--with-stream_ssl_module\

--with-stream_ssl_preread_module\