基础配置选项
--prefix=path
- 作用:设置 Nginx 安装目录。
- 使用场景:适用于需要自定义安装路径的情况。
- 示例 :
--prefix=/opt/nginx
- 注意事项:确保目标目录存在并且有写权限。
--sbin-path=path
- 作用:指定 Nginx 可执行文件的安装路径。
- 使用场景:适用于需要自定义可执行文件位置的情况。
- 示例 :
--sbin-path=/usr/local/bin/nginx
- 注意事项:确保路径有效且有执行权限。
--conf-path=path
- 作用:指定 Nginx 配置文件的路径。
- 使用场景:适用于需要自定义配置文件位置的情况。
- 示例 :
--conf-path=/etc/nginx/nginx.conf
- 注意事项:确保路径有效且配置文件格式正确。
--error-log-path=path
- 作用:指定 Nginx 错误日志文件的路径。
- 使用场景:适用于需要自定义错误日志位置的情况。
- 示例 :
--error-log-path=/var/log/nginx/error.log
- 注意事项:确保路径有效且有写权限。
--pid-path=path
- 作用:指定 Nginx PID 文件的位置。
- 使用场景:适用于需要自定义 PID 文件位置的情况。
- 示例 :
--pid-path=/var/run/nginx.pid
- 注意事项:确保路径有效且有写权限。
--lock-path=path
- 作用:指定 Nginx 锁文件的位置。
- 使用场景:适用于需要自定义锁文件位置的情况。
- 示例 :
--lock-path=/var/lock/nginx.lock
- 注意事项:确保路径有效且有写权限。
性能相关配置
--user=name
- 作用:设置 Nginx 工作进程的用户名。
- 使用场景:适用于需要指定工作进程运行用户的情况。
- 示例 :
--user=nginx
- 注意事项:确保该用户存在且有足够权限。
--group=name
- 作用:设置 Nginx 工作进程的组名。
- 使用场景:适用于需要指定工作进程运行组的情况。
- 示例 :
--group=nginx
- 注意事项:确保该组存在且有足够权限。
--with-debug
- 作用:启用调试日志。
- 使用场景:适用于开发和调试阶段。
- 示例 :
--with-debug
- 注意事项:调试日志会占用大量磁盘空间,不建议在生产环境中使用。
--with-pcre=path
- 作用:指定 PCRE 库的源代码路径,用于正则表达式支持。
- 使用场景:适用于需要正则表达式支持的情况。
- 示例 :
--with-pcre=/path/to/pcre
- 注意事项:确保 PCRE 库版本兼容。
--with-pcre-jit
- 作用:编译 PCRE 以支持 JIT(Just-In-Time)编译优化。
- 使用场景:适用于需要高性能正则表达式匹配的情况。
- 示例 :
--with-pcre-jit
- 注意事项:确保 CPU 支持 JIT 编译所需的指令集。
--with-zlib=path
- 作用:指定 zlib 库的源代码路径,用于 gzip 压缩功能。
- 使用场景:适用于需要压缩响应内容的情况。
- 示例 :
--with-zlib=/path/to/zlib
- 注意事项:确保 zlib 库版本兼容。
--with-openssl=path
- 作用:指定 OpenSSL 库的源代码路径,用于 HTTPS 支持。
- 使用场景:适用于需要 SSL/TLS 加密的情况。
- 示例 :
--with-openssl=/path/to/openssl
- 注意事项:确保 OpenSSL 库版本兼容。
--with-threads
- 作用:启用线程池支持。
- 使用场景:适用于需要高并发处理的情况。
- 示例 :
--with-threads
- 注意事项:线程池会增加内存占用。
--with-file-aio
- 作用:启用异步文件 I/O 支持。
- 使用场景:适用于需要高效处理大文件的情况。
- 示例 :
--with-file-aio
- 注意事项:异步 I/O 会增加复杂性。
--with-http_ssl_module
- 作用:启用 SSL/TLS 支持模块。
- 使用场景:适用于需要 HTTPS 支持的情况。
- 示例 :
--with-http_ssl_module
- 注意事项:确保 OpenSSL 库已安装。
--with-http_v2_module
- 作用:启用 HTTP/2 协议支持。
- 使用场景:适用于需要高性能 HTTP 服务的情况。
- 示例 :
--with-http_v2_module
- 注意事项:HTTP/2 要求 SSL/TLS 支持。
--with-http_gzip_static_module
- 作用:启用预压缩文件的处理支持。
- 使用场景:适用于需要压缩静态内容的情况。
- 示例 :
--with-http_gzip_static_module
- 注意事项:预压缩文件可以减少带宽使用。
--with-http_realip_module
- 作用:启用获取客户端真实 IP 地址的支持。
- 使用场景:适用于使用 Nginx 作为反向代理的情况。
- 示例 :
--with-http_realip_module
- 注意事项 :确保配置文件中正确设置
real_ip_header
。
--with-http_addition_module
- 作用:启用在响应中添加或修改响应头的能力。
- 使用场景:适用于需要动态修改响应头的情况。
- 示例 :
--with-http_addition_module
- 注意事项:谨慎使用,避免影响性能。
--with-http_sub_module
- 作用:启用在响应体中替换字符串的能力。
- 使用场景:适用于需要动态修改响应内容的情况。
- 示例 :
--with-http_sub_module
- 注意事项:谨慎使用,避免影响性能。
--with-http_dav_module
- 作用:启用 WebDAV 支持。
- 使用场景:适用于需要 WebDAV 功能的情况。
- 示例 :
--with-http_dav_module
- 注意事项:WebDAV 可能带来安全风险。
--with-http_flv_module
- 作用:启用 FLV 流媒体支持。
- 使用场景:适用于需要 FLV 流媒体服务的情况。
- 示例 :
--with-http_flv_module
- 注意事项:FLV 流媒体可能需要额外配置。
--with-http_mp4_module
- 作用:启用 MP4 流媒体支持。
- 使用场景:适用于需要 MP4 流媒体服务的情况。
- 示例 :
--with-http_mp4_module
- 注意事项:MP4 流媒体可能需要额外配置。
--with-http_gunzip_module
- 作用:启用解压响应的能力。
- 使用场景:适用于需要解压响应内容的情况。
- 示例 :
--with-http_gunzip_module
- 注意事项:解压操作会增加 CPU 负载。
--with-http_random_index_module
- 作用:启用随机索引页面支持。
- 使用场景:适用于需要随机索引页面的情况。
- 示例 :
--with-http_random_index_module
- 注意事项:随机索引页面可能影响用户体验。
--with-http_secure_link_module
- 作用:启用安全链接模块。
- 使用场景:适用于需要保护链接安全的情况。
- 示例 :
--with-http_secure_link_module
- 注意事项:安全链接模块需要正确配置。
--with-http_degradation_module
- 作用:启用当内存不足时降级服务的能力。
- 使用场景:适用于需要在资源紧张时保持服务的情况。
- 示例 :
--with-http_degradation_module
- 注意事项:降级服务可能影响用户体验。
--with-http_slice_module
- 作用:启用切片传输编码支持。
- 使用场景:适用于需要分段传输大文件的情况。
- 示例 :
--with-http_slice_module
- 注意事项:切片传输可能增加复杂性。
--with-http_stub_status_module
- 作用:启用状态页面支持,显示基本的性能统计信息。
- 使用场景:适用于需要监控 Nginx 性能的情况。
- 示例 :
--with-http_stub_status_module
- 注意事项:状态页面需要正确配置。
第三方模块
--add-module=path
- 作用:添加第三方模块的路径。
- 使用场景:适用于需要扩展 Nginx 功能的情况。
- 示例 :
--add-module=/path/to/third_party_module
- 注意事项:确保第三方模块与 Nginx 兼容。
其他配置
--without-http
- 作用:完全禁用 HTTP 服务器功能。
- 使用场景:适用于不需要 HTTP 服务的情况。
- 示例 :
--without-http
- 注意事项:禁用 HTTP 服务后,Nginx 将无法处理 HTTP 请求。
--without-http-cache
- 作用:禁用 HTTP 缓存。
- 使用场景:适用于不需要缓存功能的情况。
- 示例 :
--without-http-cache
- 注意事项:禁用缓存可能影响性能。
--without-mail_pop3_module
- 作用:禁用 POP3 邮件协议支持。
- 使用场景:适用于不需要 POP3 支持的情况。
- 示例 :
--without-mail_pop3_module
- 注意事项:禁用 POP3 支持后,Nginx 将无法处理 POP3 请求。
--without-mail_imap_module
- 作用:禁用 IMAP 邮件协议支持。
- 使用场景:适用于不需要 IMAP 支持的情况。
- 示例 :
--without-mail_imap_module
- 注意事项:禁用 IMAP 支持后,Nginx 将无法处理 IMAP 请求。
--without-mail_smtp_module
- 作用:禁用 SMTP 邮件协议支持。
- 使用场景:适用于不需要 SMTP 支持的情况。
- 示例 :
--without-mail_smtp_module
- 注意事项:禁用 SMTP 支持后,Nginx 将无法处理 SMTP 请求。
--without-stream
- 作用:禁用流媒体模块。
- 使用场景:适用于不需要流媒体服务的情况。
- 示例 :
--without-stream
- 注意事项:禁用流媒体模块后,Nginx 将无法处理流媒体请求。
--without-stream_limit_conn_module
- 作用:禁用流媒体连接限制模块。
- 使用场景:适用于不需要流媒体连接限制的情况。
- 示例 :
--without-stream_limit_conn_module
- 注意事项:禁用连接限制可能影响性能。
--without-stream_access_module
- 作用:禁用流媒体访问控制模块。
- 使用场景:适用于不需要流媒体访问控制的情况。
- 示例 :
--without-stream_access_module
- 注意事项:禁用访问控制可能影响安全性。
--without-stream_geo_module
- 作用:禁用流媒体地理定位模块。
- 使用场景:适用于不需要流媒体地理定位的情况。
- 示例 :
--without-stream_geo_module
- 注意事项:禁用地理定位可能影响功能。
--without-stream_map_module
- 作用:禁用流媒体变量映射模块。
- 使用场景:适用于不需要流媒体变量映射的情况。
- 示例 :
--without-stream_map_module
- 注意事项:禁用变量映射可能影响功能。
--without-stream_return_module
- 作用:禁用流媒体返回值模块。
- 使用场景:适用于不需要流媒体返回值的情况。
- 示例 :
--without-stream_return_module
- 注意事项:禁用返回值模块可能影响功能。
--without-stream_upstream_hash_module
- 作用:禁用流媒体哈希负载均衡模块。
- 使用场景:适用于不需要流媒体哈希负载均衡的情况。
- 示例 :
--without-stream_upstream_hash_module
- 注意事项:禁用哈希负载均衡可能影响性能。
--without-stream_upstream_least_conn_module
- 作用:禁用流媒体最少连接数负载均衡模块。
- 使用场景:适用于不需要流媒体最少连接数负载均衡的情况。
- 示例 :
--without-stream_upstream_least_conn_module
- 注意事项:禁用最少连接数负载均衡可能影响性能。
--without-stream_upstream_zone_hash_module
- 作用:禁用流媒体区域哈希负载均衡模块。
- 使用场景:适用于不需要流媒体区域哈希负载均衡的情况。
- 示例 :
--without-stream_upstream_zone_hash_module
- 注意事项:禁用区域哈希负载均衡可能影响性能。
--with-cc-opt=parameters
- 作用:传递额外的 C 编译器参数。
- 使用场景:适用于需要自定义编译选项的情况。
- 示例 :
--with-cc-opt="-O2 -g"
- 注意事项:确保参数有效且不会导致编译失败。
--with-ld-opt=parameters
- 作用:传递额外的链接器参数。
- 使用场景:适用于需要自定义链接选项的情况。
- 示例 :
--with-ld-opt="-L/path/to/lib -lmylib"
- 注意事项:确保参数有效且不会导致链接失败。
重点配置
--prefix=path
:设置安装目录,确保路径有效且有写权限。--with-http_ssl_module
:启用 SSL/TLS 支持,适用于需要 HTTPS 服务的情况。--with-http_v2_module
:启用 HTTP/2 协议支持,提高性能。--with-http_gzip_static_module
:启用预压缩文件的处理支持,减少带宽使用。--with-http_realip_module
:启用获取客户端真实 IP 地址的支持,适用于反向代理场景。--with-http_stub_status_module
:启用状态页面支持,便于监控 Nginx 性能。--with-threads
:启用线程池支持,提高高并发处理能力。--with-file-aio
:启用异步文件 I/O 支持,提高大文件处理效率。
使用场景与示例
假设我们需要编译一个支持 HTTPS、HTTP/2、GZIP 静态内容压缩、获取客户端真实 IP、状态页面监控、线程池和异步 I/O 的 Nginx,同时指定安装路径为 /opt/nginx
,可以这样配置:
./configure --prefix=/opt/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-threads \
--with-file-aio
make && make install
注意事项
- OpenSSL 兼容性 :在使用
--with-openssl=path
时,请确保 OpenSSL 版本与你的 Nginx 版本兼容。 - JIT 编译 :如果你启用了
--with-pcre-jit
,请确保你的 CPU 支持 JIT 编译所需的指令集。 - 模块选择:启用过多的模块可能会增加 Nginx 的内存占用,因此只启用你需要的功能。
- 调试日志 :在生产环境中,尽量避免使用
--with-debug
,因为调试日志会占用大量磁盘空间并影响性能。 - 第三方模块:确保第三方模块与 Nginx 兼容,并且正确配置。
其余参见nginx官网