nginx编译安装配置选项详解

基础配置选项

--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_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官网

相关推荐
姜鱼问生13 分钟前
数据库备份 + 灾难恢复演练:从 dump 恢复全库
运维·数据库
姜鱼问生30 分钟前
宝塔面板优雅下线:先 stop 再 disable 再 rm
运维·服务器
ao-weilai1 小时前
MySQL数据库:表约束
数据库·mysql·adb
闭包不眠1 小时前
PDF文字提取交付前该检查什么
运维·服务器·图像处理·人工智能·计算机视觉·pdf
ly76891 小时前
Redis 分布式锁的边界条件:Redlock 争议、锁续期与客户端崩溃后的互斥失效
数据库·redis·分布式·分布式锁·watchdog·redlock
guo_wen_qiang1 小时前
云服务器sentinel搭建-控制台
服务器·sentinel
kaixin_learn_qt_ing1 小时前
qgeoview-samples-basic
数据库
垆边人似月.2 小时前
5G 网络建设(300 分档)
网络·5g
Omics Pro2 小时前
微软:多模态生物世界模型
数据库·人工智能·算法·microsoft·机器学习·自然语言处理
国科安芯2 小时前
低轨卫星导航授时载荷中高精度定时控制器的时钟稳定性与抗辐射特性研究
网络·人工智能·低轨卫星·商业航天·授时·抗辐射·时钟稳定