openresty 源码编译 – 作者:hua1998

源码下载地址:http://openresty.org/cn/download.html

详细安装步骤:http://openresty.org/cn/installation.html

以下为centos7上进行源码编译与安装

1.安装依赖:

sudo yum install pcre-devel openssl-devel curl gcc

各依赖库均为最新版本:pcre-devel版本8.32,openssl-devel版本1.0.2k,curl版本7.29.0,gcc版本4.8.5

2.下载源码:

wget https://openresty.org/download/openresty-1.19.3.1.tar.gz

这里挑选的是1.19.3.1版本,该版本nginx内核升级为1.19.3

3.解压源码压缩包并进入解压后目录:

tar -zxvf openresty-1.19.3.1.tar.gz && cd openresty-1.19.3.1

4.进行配置:

./configure

默认的配置参数为:–prefix=/usr/local/openresty/nginx –with-cc-opt=-O2 –add-module=../ngx_devel_kit-0.3.1 –add-module=../echo-nginx-module-0.62 –add-module=../xss-nginx-module-0.06 –add-module=../ngx_coolkit-0.2 –add-module=../set-misc-nginx-module-0.32 –add-module=../form-input-nginx-module-0.12 –add-module=../encrypted-session-nginx-module-0.08 –add-module=../srcache-nginx-module-0.32 –add-module=../ngx_lua-0.10.19 –add-module=../ngx_lua_upstream-0.07 –add-module=../headers-more-nginx-module-0.33 –add-module=../array-var-nginx-module-0.05 –add-module=../memc-nginx-module-0.19 –add-module=../redis2-nginx-module-0.15 –add-module=../redis-nginx-module-0.3.7 –add-module=../rds-json-nginx-module-0.15 –add-module=../rds-csv-nginx-module-0.09 –add-module=../ngx_stream_lua-0.0.9 –with-ld-opt=-Wl,-rpath,/usr/local/openresty/luajit/lib –with-stream –with-stream_ssl_module –with-stream_ssl_preread_module –with-http_ssl_module

注:如果是在mac上执行./configure可能会报OpenSSL相关的错,

error: SSL modules require the OpenSSL library.

解决方法:将openssl源码下载至本地(推荐版本openssl-1.1.1j),执行./configure时指定openssl源码路径:

./configure –with-openssl={your_openssl_local_dir}/openssl-1.1.1j

此时应该不会再报错

完整配置选项如下所示:

–prefix=PATH

设置安装路径 (默认为 /usr/local/openresty)

–with-debug

启用调试日志

–with-no-pool-patch

启用无池补丁调试内存问题 (nginx的内存池可能会干扰nginx发现内存问题的第一现场,所以可以考虑在构造openresty时禁用nginx 的内存池)

-jN

构建LuaJIT2.1时将该参数传递过去

–without-http_echo_module

禁用ngx_http_echo_module (nginx的echo模块可以在nginx的url访问中通过echo命令输出字符到用户的浏览器,一般用来调试输出信息,检测nginx的可访问性、配置正确性。)

–without-http_xss_module

禁用ngx_http_xss_module 跨站点脚本支持

–without-http_coolkit_module

禁用ngx_http_coolkit_module (ngx_http_coolkit_module是一个小而有用的nginx插件模块集合)

–without-http_set_misc_module

禁用ngx_http_set_misc_module (ngx_http_set_misc_module模块是标准的HttpRewriteModule指令的扩展,提供更多的功能,如URI转义与非转义、JSON引述、Hexadecimal/MD5/SHA1/Base32/Base64编码与解码、随机数等等。)

–without-http_form_input_module

禁用ngx_http_form_input_module (ngx_http_form_input_module是 Openresty 中一个用于处理 HTTP 请求的 POST 以及 PUT 方法,在协议头 Content-Type 是 application/x-www-form-urlencoded 的情况下,解析请求实体内容并按 nginx 变量存储的模块。)

–without-http_encrypted_session_module

禁用ngx_http_encrypted_session_module (ngx_http_encrypted_session_module是一个加密解密nginx变量值的模块,此模块提供了基于AES-256与Mac的变量加密和解密支持,此模块通常与ngx_set_misc模块和标准rewrite模块的指令一起使用,此模块可用于实现简单的用户登录和ACL。)

–without-http_srcache_module

禁用ngx_http_srcache_module (此模块为任意nginx位置提供了一个透明缓存层,为location增加了透明的基于subrequest的缓存层(类似于使用upstream或者甚至提供静态磁盘文件的缓存层)。)

–without-http_lua_module

禁用ngx_http_lua_module

–without-http_lua_upstream_module

禁用ngx_http_lua_upstream_module (ngx_http_lua_upstream_module是openresty的负载均衡模块)

–without-http_headers_more_module

禁用ngx_http_headers_more_module (ngx_http_headers_more_module是nginx定制header返回信息模块,用于添加、设置和清除输入和输出的头信息。nginx源码没有包含该模块,需要另行添加。该模块是ngx_http_headers_module模块的增强版,提供了更多的实用工具,比如复位或清除内置头信息,如Content-Type, Content-Length, 和Server。可以允许你使用-s选项指定HTTP状态码,使用-t选项指定内容类型,通过more_set_headers 和 more_clear_headers 指令来修改输出头信息。)

–without-http_array_var_module

禁用ngx_http_array_var_module(此模块为nginx.conf提供了数组类型的nginx变量。)

–without-http_memc_module

禁用ngx_http_memc_module (memc模块扩展了Nginx标准的memcache模块,增加了set、add、delete等memcache命令)

–without-http_redis2_module

禁用ngx_http_redis2_module (redis2-nginx-module 是一个支持 Redis 2.0 协议的 Nginx upstream 模块,它可以让 Nginx 以非阻塞方式直接防问远方的 Redis 服务,同时支持 TCP 协议和 Unix Domain Socket 模式,并且可以启用强大的 Redis 连接池功能。)

–without-http_redis_module

禁用ngx_http_redis_module (此模块是一个简单的提供redis缓存的模块,目前仅提供select和get方法。)

–without-http_rds_json_module

禁用ngx_http_rds_json_module (此模块用来做数据格式转换)

–without-http_rds_csv_module

禁用ngx_http_rds_csv_module (此模块用来做数据格式转换)

–without-stream_lua_module

禁用ngx_stream_lua_module(configure文件中未对此选项做处理,应该可忽略)

–without-ngx_devel_kit_module

禁用ngx_devel_kit_module (Nginx的开发套件)

–without-stream

禁用TCP/UDP代理模块

–without-http_ssl_module

禁用ngx_http_ssl_module (该模块使Nginx支持SSL协议,提供HTTPS服务。该模块的安装依赖于OpenSSL。)

–without-stream_ssl_module

禁用ngx_stream_ssl_module(该模块提供了一种用于流代理服务器与SSL / TLS协议工作必要的支持)

–with-http_iconv_module

启用ngx_http_iconv_module (此模块使用libiconv来转换不同编码字符,依赖于libiconv。)

–with-http_drizzle_module

启用ngx_http_drizzle_module (此模块使NGINX直接与MySQL或Drizzle(一个精简版的MySQL分支)数据库服务器通信)

–with-http_postgres_module

启用ngx_http_postgres_module (此模块允许NGINX直接与PostgreSQL数据库通信)

–without-lua_cjson

禁用lua-cjson library (Lua CJSON是一个Lua c模块,提供快速的JSON解析和Lua的编码支持)

–without-lua_tablepool

禁用基于 LuaJIT 的 Lua 表格资源回收池支持库(会导致lua-resty-shell同时被禁用)

–without-lua_redis_parser

禁用lua-redis-parser library (lua-redis解析器库实现了一个简单且快速的redis原始响应解析器,它构造相应的lua数据结构,以及一个构造redis raw请求的函数。)

–without-lua_rds_parser

禁用lua-rds-parser library (这个Lua库可以用于将Drizzle Nginx模块和Postgres Nginx模块生成的Resty-DBD-Stream格式的数据解析为Lua数据结构。在过去,我们必须使用JSON作为中间数据格式,这在内存和CPU时间方面是相当低效的。为了最大化速度和最小化内存占用,这个库以纯C语言实现。默认情况下启用此库。)

–without-lua_resty_dns

禁用lua-resty-dns library (非阻塞DNS(域名系统)解析器的Lua Nginx模块,基于cosocket API。)

–without-lua_resty_memcached

禁用lua-resty-memcached library (Memcached客户端驱动程序模块,基于cosocket API的Lua Nginx模块。)

–without-lua_resty_redis

禁用lua-resty-redis library (Lua Redis客户端驱动程序,基于cosocket API的Lua Nginx模块。)

–without-lua_resty_mysql

禁用lua-resty-mysql library (Lua MySQL客户端驱动程序,基于cosocket API的Lua Nginx模块。)

–without-lua_resty_upload

禁用lua-resty-upload library (基于Lua Nginx模块的cosocket API用于HTTP文件上传流阅读器和分析器。)

–without-lua_resty_upstream_healthcheck

禁用lua-resty-upstream-healthcheck library (此模块是纯Lua的Nginx上游服务器健康检查器。)

–without-lua_resty_string

禁用lua-resty-string library (一个Lua库,为Lua Nginx模块提供字符串实用程序和通用哈希函数。)

-without-lua_resty_websocket

禁用lua-resty-websocket library (这个Lua库实现了一个非阻塞WebSocket服务器和基于Lua Nginx模块的cosocket API的非阻塞WebSocket客户端。)

–without-lua_resty_limit_traffic

禁用不编译 lua-resty-limit-traffic 支持库(该库实现Lua限流)

–without-lua_resty_lock

禁用lua-resty-lock library (这个Lua库实现了一个基于Lua Nginx模块的共享内存字典的简单非阻塞互斥锁API。 主要用于消除“dog-pile effects”。dog-pile effect 指当网页缓存失效同时遇到大量请求,后端应用服务请求建立缓存,导致服务器卡顿甚至系统宕机的现象。)

–without-lua_resty_lrucache

禁用lua-resty-lrucache library (实现OpenResty的Lua-land LRU缓存。)

–without-lua_resty_signal

禁用lua-resty-signal 支持库,该支持库用于向 UNIX 进程发送信号(会导致lua-resty-shell同时被禁用)

without-lua_resty_shell

禁用lua-resty-shell库,该库可以实现通过 Lua 调用 shell 脚本

–without-lua_resty_core

禁用lua-resty-core library (使用LuaJIT FFI实现Lua Nginx模块提供的Lua API。)

–with-luajit=DIR

使用指定的DIR安装LuaJIT 2.1

–with-luajit-xcflags=FLAGS

为LuaJIT 2.1指定额外的C编译器标志

–with-luajit-ldflags=FLAGS

为LuaJIT 2.1指定额外的C链接器标志

–without-luajit-lua52

禁用基于 Lua 5.2 的 LuaJIT 扩展解释器

–without-luajit-gc64

关闭LuaJIT GC64模式(该模式在x86_64机器上默认打开,该模式将LuaJIT 垃圾回收器能管理的内存从2G扩展到最大128T)

–with-libdrizzle=DIR

指定libdrizzle 1.0(或drizzle)安装路径

–with-libpq=DIR

指定libpq(或postgresql)安装路径

–with-pg_config=PATH

指定pg_config实用程序的路径

–sbin-path=PATH

设置可执行文件放置路径

–modules-path=PATH

设置模块存放路径

–conf-path=PATH

设置nginx.conf存放路径

–error-log-path=PATH

设置error.log存放路径

–pid-path=PATH

设置nginx.pid存放路径

–lock-path=PATH

设置nginx.lock存放路径

–user=USER

为工作进程设置非特权用户

–group=GROUP

为工作进程设置非特权组

–build=NAME

设置可选的nginx构建器

–builddir=DIR

设置构建目录

–with-select_module

使用select module处理事件驱动

–without-select_module

禁用select module

–with-poll_module

使用poll module处理事件驱动

–without-poll_module

禁用poll module

–with-threads

启用线程池支持

–with-file-aio

启用文件异步IO支持

–with-http_ssl_module

启用ngx_http_ssl_module(默认不启用)

–with-http_v2_module

启用ngx_http_v2_module

–with-http_realip_module

启用ngx_http_realip_module(该模块可以从客户端请求里的header信息(如X-Real-IP或者X-Forwared-For)中获取真正的客户端IP地址)

–with-http_addition_module

启用ngx_http_addition_module(该模块可以在返回客户端的HTTP包体头部或者尾部增加内容)

–with-http_xslt_module

启用ngx_http_xslt_module(这个模块可以使XML格式的数据在发给客户端前加入XSL渲染,此模块依赖于libxml2和libxslt库。)

–with-http_xslt_module=dynamic

启用动态ngx_http_xslt_module

–with-http_image_filter_module

启用ngx_http_image_filter_module(此模块将符合配置的图片实时压缩为指定大小(width*height)的缩略图再发送给用户,目前支持JPEG、PNG、GIF格式。此模块依赖于开源的libgd库。)

–with-http_image_filter_module=dynamic

启用动态ngx_http_image_filter_module

–with-http_geoip_module

启用http geoip module。该模块可以依据MaxMind GeoIP的IP地址数据库对客户端的IP地址得到实际的地理位置信息。

–with-http_geoip_module=dynamic

启用动态ngx_http_geoip_module

–with-http_sub_module

启用http sub module。该模块可以在Nginx返回客户端的HTTP响应包中将指定的字符串替换为自己需要的字符串。例如,在HTML的返回中,将</head>替换为</head><script language=”javascript” src=”$script”></script>

–with-http_dav_module

启用http dav module。这个模块可以让Nginx支持Webdav标准,如支持Webdav协议中的PUT、DELETE、COPY、MOVE、MKCOL等请求

–with-http_flv_module

启用http flv module。这个模块可以在向客户端返回响应时,对FLV格式的视频文件在header头做一些处理,使得客户端可以观看、拖动FLV视频

–with-http_mp4_module

启用构建ngx_http_mp4_module模块,该模块为mp4文件提供伪流媒体服务端支持。默认不构建该模块

–with-http_gunzip_module

启用构建ngx_http_gunzip_module模块,该模块为那些不支持gzip模块的客户端解压缩gzip格式相应的响应。这个模块对存储压缩存储的数据以及节省磁盘空间及减少I/O等有很大好处。这个模块不是默认的内建模块

–with-http_gzip_static_module

启用ngx_http_gzip_static_module。如果采用gzip模块把一些文档进行gzip格式压缩后再返回给客户端,那么对同一个文件每次都会重新压缩,这是比较消耗服务器CPU资源的。gzip static模块可以在做gzip压缩前,先查看相同位置是否有已经做过gzip压缩的.gz文件,如果有就直接返回。这样就可以预先在服务器上做好文档的压缩,给CPU减负。

–with-http_auth_request_module

启用ngx_http_auth_request_module。这个是nginx的一个验证模块,这个模块允许您的nginx通过发送请求到后端服务器(一般是应用服务器,例如tomcat,或者php等)进行请求,并且根据请求决定是验证通过或者不通过

–with-http_random_index_module

启用ngx_http_random_index_module。该模块在客户端访问某个目录时,随机返回该目录下的任意文件。

–with-http_secure_link_module

启用ngx_http_secure_link_module。该模块提供一种验证请求是否有效的机制。例如,它会验证URL中需要加入的token参数是否属于特定客户端发来的,以及检查时间戳是否过期。

–with-http_degradation_module

启用ngx_http_degradation_module。该模块针对一些特殊的系统调用(如sbrk)做一些优化,如直接返回HTTP响应码为204或444,目前不支持Linux系统。

–with-http_slice_module

启用ngx_http_slice_module模块。该模块可以将一个请求分解成多个子请求,每个子请求返回响应内容的一个片段,让大文件的缓存更有效率。该模块默认不构建

–with-http_stub_status_module

启用ngx_http_stub_status_module。该模块可以让运行中的Nginx提供性能统计页面,获取相关的并发连接、请求的信息。

–without-http_charset_module

禁用ngx_http_charset_module。这个模块可以将服务器发出的HTTP响应重编码。

–without-http_gzip_module

禁用ngx_http_gzip_module。在服务器发出的HTTP响应包中,这个模块可以按照配置文件指定的content-type对特定大小的HTTP响应包体执行gzip压缩。

–without-http_ssi_module

禁用ngx_http_ssi_module。该模块可以在向用户返回的HTTP响应包体中加入特定的内容,如HTML文件中固定的页头和页尾。

–without-http_userid_module

禁用ngx_http_userid_module。该模块可以通过HTTP请求头部信息里的一些字段认证用户信息,以确定请求是否合法。

–without-http_access_module

禁用ngx_http_access_module。该模块可以根据IP地址限制能够访问服务器的客户端。

–without-http_auth_basic_module

禁用ngx_http_auth_basic_module。该模块可以提供最简单的用户名/密码认证。

–without-http_mirror_module

禁用ngx_http_mirror_module。该模块通过创建后台镜像子请求来实现原始请求的镜像。

–without-http_autoindex_module

禁用ngx_http_autoindex_module。该模块提供简单的目录浏览功能。

–without-http_geo_module

禁用ngx_http_geo_module。该模块可以定义一些变量,这些变量的值将与客户端IP地址关联,这样Nginx针对不同的地区的客户端(根据IP地址判断)返回不一样的结果,例如不同地区显示不同语言的网页。

–without-http_map_module

禁用ngx_http_map_module。该模块可以建立一个key/value映射表,不同的key得到相应的value,这样可以针对不同的URL做特殊处理。例如,返回302重定向响应时,可以期望URL不同时返回的Location字段也不一样。

–without-http_split_clients_module

禁用ngx_http_split_clients_module。该模块会根据客户端的信息,例如IP地址、header头、cookie等,来区分处理。

–without-http_referer_module

禁用ngx_http_referer_module。该模块可以根据请求中的refer字段来拒绝请求。

–without-http_rewrite_module

禁用ngx_http_rewrite_module。 该模块提供HTTP请求在Nginx服务内部的重定向功能,依赖PCRE库。

–without-http_proxy_module

禁用ngx_http_proxy_module。 该模块提供基本的HTTP反向代理功能。

–without-http_fastcgi_module

禁用ngx_http_fastcgi_module。 该模块提供FastCGI功能。

–without-http_uwsgi_module

禁用ngx_http_uwsgi_module。该模块提供uWSGI功能。uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。

–without-http_scgi_module

禁用ngx_http_scgi_module。该模块提供SCGI功能。SCGI(Simple Common Gateway Interface),简单通用网关接口。是CGI的替代协议,与FastCGI相似,但更简单。

–without-http_grpc_module

禁用ngx_http_grpc_module。模块允许将请求传递给 gRPC 服务器

–without-http_memcached_module

禁用ngx_http_memcached_module。该模块可以使得Nginx直接由上游的memcached服务读取数据,并简单地适配成HTTP响应返回给客户端。

–without-http_limit_conn_module

禁用ngx_http_limit_conn_module。该模块针对某个IP地址限制并发连接数。

–without-http_limit_req_module

禁用ngx_http_limit_req_module。该模块针对某个IP地址限制并发请求数。

–without-http_empty_gif_module

禁用ngx_http_empty_gif_module。该模块可以使得Nginx在收到无效请求时,立刻返回内存中的1×1像素的GIF图片。这种好处在于,对于明显的无效请求不会去试图浪费服务器资源。

–without-http_browser_module

禁用ngx_http_browser_module。该模块会根据HTTP请求中的user-agent字段(该字段通常由浏览器填写)来识别浏览器

–without-http_upstream_hash_module

禁用ngx_http_upstream_hash_module。该模块支持哈希负载均衡方法,特别是url_hash

–without-http_upstream_ip_hash_module

禁用ngx_http_upstream_ip_hash_module。该模块提供当Nginx与后端server建立连接时,会根据IP做哈希运算来决定与后端哪台server通信,这样可以实现负载均衡。

–without-http_upstream_least_conn_module

禁用ngx_http_upstream_least_conn_module。该模块提供当Nginx与后端server建立连接时,会通过最少连接负载均衡算法来决定与后端哪台server通信,简单来说就是每次选择的都是当前最少连接的一个server(这个最少连接不是全局的,是每个进程都有自己的一个统计列表)。

–without-http_upstream_random_module

禁用ngx_http_upstream_random_module。该模块实现随机负载均衡

–without-http_upstream_keepalive_module

禁用ngx_http_upstream_keepalive_module。这是一个用于nginx的实现缓存的后端连接的keepalive平衡器模块。

–without-http_upstream_zone_module

禁用ngx_http_upstream_zone_module。该模块分配出共享内存,将其他upstream模块定义的负载均衡策略数据,运行时每个上游服务的状态数据存放在共享内存上,以对所有的nginx worker进程生效

–with-http_perl_module

启用ngx_http_perl_module。该模块用于在Perl中实现位置和变量处理程序,并将Perl调用插入到SSI中。

–with-http_perl_module=dynamic

启动动态ngx_http_perl_module

–with-perl_modules_path=PATH

设置Perl模块路径。只有使用了第三方的perl module,才需要配置这个路径。

–with-perl=PATH

设置perl binary的路径。如果配置的Nginx会执行Perl脚本,那么就必须设置此路径。

–http-log-path=PATH

设置access日志存放路径。安装后,该路径可以通过在nginx.conf中使用access_log 来进行修改。默认的文件路径为prefix/logs/access.log

–http-client-body-temp-path=PATH

处理HTTP请求时如果请求的包体需要暂时存放到临时磁盘文件中,则把这样的临时文件存放到该路径下。安装后,该路径可以通过在nginx.conf中使用client_body_temp_path来进行修改。默认的文件路径为prefix/client_body_temp

–http-proxy-temp-path=PATH

Nginx作为HTTP反向代理服务器时,上游服务器产生的HTTP包体在需要临时存放到磁盘文件时,这样的临时文件将存放到该路径下。安装后,该路径可以通过在nginx.conf中使用proxy_temp_path 来进行修改。默认的文件路径为prefix/proxy_temp

–http-fastcgi-temp-path=PATH

设置Fastcgi所使用临时文件的存放路径。安装后,该路径可以通过在nginx.conf中使用fastcgi_temp_path 来进行修改。默认的文件路径为prefix/fastcgi_temp

–http-uwsgi-temp-path=PATH

设置uWSGI所使用临时文件的存放路径。安装后,该路径可以通过在nginx.conf中使用uwsgi_temp_path 来进行修改。默认的文件路径为prefix/uwsgi_temp

–http-scgi-temp-path=PATH

设置SCGI所使用临时文件的存放路径。安装后,该路径可以通过在nginx.conf中使用scgi_temp_path 来进行修改。默认的文件路径为prefix/scgi_temp

–without-http

禁用HTTP服务器。

–without-http-cache

禁用HTTP服务器里的缓存Cache特性。

–with-mail

启用POP3/IMAP4/SMTP proxy module 安装邮件服务器反向代理模块,使Nginx可以反向代理IMAP、POP3、SMTP等协议,该模块默认不安装。

–with-mail=dynamic

启用动态POP3/IMAP4/SMTP proxy module

–with-mail_ssl_module

安装ngx_mail_ssl_module。该模块可以使IMAP、POP3、SMTP等协议基于SSL/TLS协议之上使用。该模块默认不安装并依赖于OpenSSL库。

–without-mail_pop3_module

不安装ngx_mail_pop3_module。在使用–with-mail参数后,pop3 module是默认安装的,以使Nginx支持POP3协议

–without-mail_imap_module

不安装ngx_mail_imap_module。在使用–with-mail参数后,imap module是默认安装的,以使Nginx支持IMAP协议。

–without-mail_smtp_module

不安装ngx_mail_smtp_module。在使用–with-mail参数后,smtp module是默认安装的,以使Nginx支持SMTP协议。

–with-stream

启用TCP/UDP代理模块(默认打开)

–with-stream=dynamic

启用动态TCP/UDP代理模块

–with-stream_ssl_module

启用ngx_stream_ssl_module。该模块提供了一种用于流代理服务器与SSL / TLS协议工作必要的支持。构建和运行该模块需要openSSL库

–with-stream_realip_module

启用ngx_stream_realip_module。模块用于将客户端地址和端口更改为在PROXY协议报头中发送的地址和端口。通过在nginx.conf的listen指令中设置proxy_protocol参数,必须先启用PROXY协议

–with-stream_geoip_module

启用ngx_stream_geoip_module。该模块根据客户端IP地址和预编译的MaxMind数据库创建变量。

–with-stream_geoip_module=dynamic

启用动态ngx_stream_geoip_module

–with-stream_ssl_preread_module

启用ngx_stream_ssl_preread_module。该模块允许从ClientHello消息中抽取信息而不终止SSL / TLS

–without-stream_limit_conn_module

禁用ngx_stream_limit_conn_module。该模块被用于限制每个定义的键连接的数量,如每个ip地址的连接数量。

–without-stream_access_module

禁用ngx_stream_access_module。该模块允许限制访问某些客户端地址

–without-stream_geo_module

禁用ngx_stream_geo_module。该模块创建值依赖于客户端ip的变量

–without-stream_map_module

禁用ngx_stream_map_module。该模块创建值依赖于其他变量值的变量

–without-stream_split_clients_module

禁用ngx_stream_split_clients_module。该模块创建变量用于A/B测试。

–without-stream_return_module

禁用ngx_stream_return_module。该模块允许发送一个指定的值给客户端,然后关闭连接。

–without-stream_upstream_hash_module

禁用ngx_stream_upstream_hash_module。该模块实现了哈希负载均衡方法

–without-stream_upstream_least_conn_module

禁用ngx_stream_upstream_least_conn_module。该模块实现了最少连接负载均衡方法

–without-stream_upstream_random_module

禁用ngx_stream_upstream_random_module该模块实现了随机负载均衡方法

–without-stream_upstream_zone_module

禁用ngx_stream_upstream_zone_module。该模块将upstream组的运行时状态存储在共享内存中

–with-google_perftools_module

启用ngx_google_perftools_module。该模块提供Google的性能测试工具。

–with-cpp_test_module

启用ngx_cpp_test_module

–add-module=PATH

当在Nginx里加入第三方模块时,通过这个参数指定第三方模块的路径。

–add-dynamic-module=PATH

当在Nginx里加入动态加载的第三方模块时,通过这个参数指定第三方模块的路径。

–with-compat

启用动态模块兼容性

–with-cc=PATH

设置C编译器的路径

–with-cpp=PATH

设置C预编译器的路径

–with-cc-opt=OPTIONS

如果希望在Nginx编译期间指定加入一些编译选项,如指定宏或者使用-I加入某些需要包含的目录,这时可以使用该参数达成目的

–with-ld-opt=OPTIONS

最终的二进制可执行文件是由编译后生成的目标文件与一些第三方库链接生成的,在执行链接操作时可能会需要指定链接参数,–with-ld-opt就是用于加入链接时的参数。例如,如果我们希望将某个库链接到Nginx程序中,需要在这里加入–with-ld-opt=libraryName -LibraryPath,其中libraryName是目标库的名称,LibraryPath则是目标库所在的路径

–with-cpu-opt=CPU

指定CPU处理器架构,只能从以下取值中选择:pentium, pentiumpro, pentium3, pentium4, athlon, opteron, sparc32, sparc64, ppc64

–without-pcre

如果确认Nginx不用解析正则表达式,也就是说,nginx.conf配置文件中不会出现正则表达式,那么可以使用这个参数

–with-pcre

强制使用PCRE库

–with-pcre=DIR

指定PCRE库的源码位置,在编译时会进入该目录编译PCRE源码

–with-pcre-opt=OPTIONS

编译PCRE源码时希望加入的编译选项

–with-pcre-jit

使用JIT编译支持构建PCRE

–with-zlib=DIR

指定zlib库的源码位置,在编译Nginx时会进入该目录编译zlib源码。如果使用了gzip压缩功能,就需要zlib库的支持

–with-zlib-opt=OPTIONS

编译zlib源码时希望加入的编译选项

–with-zlib-asm=CPU

指定对特定的CPU使用zlib库的汇编优化功能,目前仅支持两种架构:pentium和pentiumpro

–with-libatomic

强制使用atomic库。atomic库是CPU架构独立的一种原子操作的实现。它支持以下体系架构:x86(包括i386和x86_64)、PPC64、Sparc64(v9或更高版本)或者安装了gcc 4.1.0及更高版本的架构。

–with-libatomic=DIR

指定atomic库所在的位置

–with-openssl=DIR

指定OpenSSL库的源码位置,在编译Nginx时会进入该目录编译OpenSSL源码。 注意:如果Web服务器支持HTTPS,也就是SSL协议,Nginx要求必须使用OpenSSL。可以访问http://www.openssl.org/免费下载

–with-openssl-opt=OPTIONS

编译OpenSSL源码时希望加入的编译选项

–dry-run

仅测试配置

–platform=PLATFORM

强制指定平台名称,仅用于测试

参考文档:

openresty编译参数详解

Building nginx from Sources

nginx教程

5.编译:

gmake

6.安装openresty:

sudo gmake install

7.服务启动:

/usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf

来源:freebuf.com 2021-04-08 15:27:13 by: hua1998

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论