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

相关推荐
王ASC7 分钟前
ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值。ojdbc8版本23.2.0.0驱动BUG【已解决】
数据库·sql·oracle
Dlwyz18 分钟前
问题: redis-高并发场景下如何保证缓存数据与数据库的最终一致性
数据库·redis·缓存
岳不谢27 分钟前
VPN技术-VPN简介学习笔记
网络·笔记·学习·华为
follycat36 分钟前
信息收集--CDN绕过
网络·安全·网络安全
如意机反光镜裸1 小时前
如何快速将Excel数据导入到SQL Server数据库
数据库
不爱学习的啊Biao1 小时前
初识mysql数据库
数据库·mysql·oracle
1900432 小时前
linux复习5:C prog
linux·运维·服务器
宛唐羁客2 小时前
ODBC连接PostgreSQL数据库后,网卡DOWN后,客户端进程阻塞问题解决方法
网络·数据库
Beekeeper&&P...2 小时前
web钩子什么意思
前端·网络
吴半杯3 小时前
Redis-monitor安装与配置
数据库·redis·缓存