参考地址
官方参考地址 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
##禁用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