Nginx软件安装及配置说明
Nginx软件的安装包括以下三种方式:
- 源码编译安装
- linux软件源命令安装
- windows二进制安装包
Linux系统安装Nginx
一、源码编译安装Nginx
1.1 源码下载和编译
1.源码下载
源码下载地址:https://nginx.org/
1.1直接下载
在右侧栏中,点击download,选择最新的稳定版本
下载好后,上传到目标服务器上。
1.2直接服务器下载
复制对应的下载连接,使用wget下载
wget https://nginx.org/download/nginx-1.24.0.tar.gz
--2024-02-19 14:11:37-- https://nginx.org/download/nginx-1.24.0.tar.gz
Resolving nginx.org (nginx.org)... 3.125.197.172, 52.58.199.22, 2a05:d014:5c0:2601::6, ...
Connecting to nginx.org (nginx.org)|3.125.197.172|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1112471 (1.1M) [application/octet-stream]
Saving to: ‘nginx-1.24.0.tar.gz’nginx-1.24.0.tar.gz 100%[========================================>] 1.06M 993KB/s in 1.1s2024-02-19 14:11:39 (993 KB/s) - ‘nginx-1.24.0.tar.gz’ saved [1112471/1112471]
2.解压、编译和安装
解压
tar -zxvf nginx-1.24.0.tar.gz
安装nginx需要的环境依赖
yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++
编译
./configure
make
make install
执行完上面的命令后,nginx即已经安装完毕。
nginx的安装路径为: /usr/local/nginx
1.2、源码编译安装Nginx说明
./configure
make
make install
在上面的源码编译安装中,使用的是默认的安装方式,可能编译安装的产品包缺少功能模块。下面是一个较为常用的编译安装:
./configure --with-http_ssl_module --with-http_realip_module --with-http_gunzip_module --with-http_gzip_static_module --with-file-aio --with-stream --with-stream_ssl_module --with-http_stub_status_modulemake -j8
make install
上面编译选项解释:
- –with-http_ssl_module: 启用HTTPS
- –with-http_realip_module: 启用realip模块
- –with-http_gunzip_module: 启用gzip模块
- –with-http_gzip_static_module: 启用gzip static模块
- –with-file-aio:启用异步文件读写
- –with-stream: 启用流处理
- –with-stream_ssl_module:启用stream的ssl模块
- –with-http_stub_status_module:启用nginx状态展示模块
1.3、configure语法说明
- 如果要编译官方模块为动态模块,你需要在configure的时候加上类似这样的指令(—with-http_xxx_module),./configure —help可以看到更多的细节.
该命令支持以下参数:configure
- –help
打印帮助消息。
- –prefix=path
定义将保存服务器文件的目录。 此目录也将用于 设置的所有相对路径(库源的路径除外) 并在配置文件中。 默认情况下,它设置为目录。configurenginx.conf/usr/local/nginx
- –sbin-path=path
设置 nginx 可执行文件的名称。 此名称仅在安装期间使用。 默认情况下,该文件名为 。prefix/sbin/nginx
- –modules-path=path
定义将安装 nginx 动态模块的目录。 默认情况下,使用该目录。prefix/modules
- –conf-path=path
设置配置文件的名称。 如果需要,nginx 总是可以使用不同的配置文件启动, 通过在命令行参数 -c 文件中指定它。 默认情况下,该文件名为 。nginx.confprefix/conf/nginx.conf
- –error-log-path=path
设置主要错误、警告和诊断文件的名称。 安装后,始终可以使用 error_log 指令在配置文件中更改文件名。 默认情况下,该文件名为 。nginx.confprefix/logs/error.log
- –pid-path=path
设置文件的名称 它将存储主进程的进程 ID。 安装后,始终可以使用 pid 指令在配置文件中更改文件名。 默认情况下,该文件名为 。nginx.pidnginx.confprefix/logs/nginx.pid
- –lock-path=path
为锁定文件的名称设置前缀。 安装后,始终可以使用 lock_file 指令在配置文件中更改该值。 默认情况下,该值为 。nginx.confprefix/logs/nginx.lock
- –user=name
设置将使用其凭据的非特权用户的名称 按工作进程。 安装后,始终可以使用 user 指令在配置文件中更改名称。 默认用户名为 nobody。nginx.conf
- –group=name
设置将使用其凭据的组的名称 按工作进程。 安装后,始终可以使用 user 指令在配置文件中更改名称。 默认情况下,组名称设置为非特权用户的名称。nginx.conf
- –build=name
设置可选的 nginx 构建名称。
- –builddir=path
设置构建目录。
- –with-select_module
- –without-select_module
启用或禁用构建允许服务器工作的模块 与方法。 如果平台未出现,则会自动构建此模块 支持更合适的方法,例如 kqueue、epoll 或 /dev/poll。select()
- –with-poll_module
- –without-poll_module
启用或禁用构建允许服务器工作的模块与方法。 如果平台未出现,则会自动构建此模块 支持更合适的方法,例如 kqueue、epoll 或 /dev/poll。poll()
- –with-threads
允许使用线程池。
- –with-file-aio
支持在 FreeBSD 和 Linux 上使用异步文件 I/O (AIO)。
- –with-http_ssl_module
允许构建一个模块,该模块将 HTTPS 协议支持添加到 HTTP 服务器。 默认情况下不构建此模块。 构建和运行此模块需要 OpenSSL 库。
- –with-http_v2_module
启用构建支持 HTTP/2 的模块。 默认情况下不构建此模块。
- –with-http_v3_module
用于构建支持 HTTP/3 的模块。 默认情况下不构建此模块。 提供 HTTP/3 支持的 SSL 库 建议构建并运行此模块,例如 BoringSSL、LibreSSL 或 QuicTLS。 否则,如果使用 OpenSSL 库, 将使用 OpenSSL 兼容层 不支持 QUIC 早期数据。
- –with-http_realip_module
启用生成将客户端地址更改为地址的 ngx_http_realip_module 模块 在指定的标头字段中发送。 默认情况下不构建此模块。
- –with-http_addition_module
启用生成在响应之前和之后添加文本的 ngx_http_addition_module 模块。 默认情况下不构建此模块。
- –with-http_xslt_module
- –with-http_xslt_module=dynamic
允许生成使用一个或多个 XSLT 样式表转换 XML 响应的 ngx_http_xslt_module 模块。 默认情况下不构建此模块。 libxml2 和 libxslt 库 是生成和运行此模块所必需的。
- –with-http_image_filter_module
- –with-http_image_filter_module=dynamic
支持构建 ngx_http_image_filter_module 模块,该模块可转换 JPEG、GIF、PNG 和 WebP 格式的图像。 默认情况下不构建此模块。
- –with-http_geoip_module
- –with-http_geoip_module=dynamic
允许构建ngx_http_geoip_module模块,该模块根据客户端 IP 地址创建变量 以及预编译的 MaxMind 数据库。 默认情况下不构建此模块。
- –with-http_sub_module
启用生成 ngx_http_sub_module 模块,该模块通过将一个指定的字符串替换为另一个指定的字符串来修改响应。 默认情况下不构建此模块。
- –with-http_dav_module
支持构建通过 WebDAV 协议提供文件管理自动化的 ngx_http_dav_module 模块。 默认情况下不构建此模块。
- –with-http_flv_module
支持构建提供伪流式处理服务器端支持的 ngx_http_flv_module 模块 用于 Flash 视频 (FLV) 文件。 默认情况下不构建此模块。
- –with-http_mp4_module
支持构建提供伪流式处理服务器端支持的 ngx_http_mp4_module 模块 用于 MP4 文件。 默认情况下不构建此模块。
- –with-http_gunzip_module
能够构建用于解压缩响应的 ngx_http_gunzip_module 模块 与“” 对于不支持“gzip”编码方法的客户端。 默认情况下不构建此模块。Content-Encoding: gzip
- –with-http_gzip_static_module
启用生成 ngx_http_gzip_static_module 模块,该模块可以发送预压缩文件 使用“”文件扩展名而不是常规文件。 默认情况下不构建此模块。.gz
- –with-http_auth_request_module
启用构建实现客户端授权的 ngx_http_auth_request_module 模块 基于子请求的结果。 默认情况下不构建此模块。
- –with-http_random_index_module
启用生成处理请求的 ngx_http_random_index_module 模块 以斜杠字符 (‘’) 结尾并随机选择一个 文件作为索引文件。 默认情况下不构建此模块。/
- –with-http_secure_link_module
启用构建 ngx_http_secure_link_module 模块。 默认情况下不构建此模块。
- –with-http_degradation_module
启用构建模块。 默认情况下不构建此模块。ngx_http_degradation_module
- –with-http_slice_module
支持构建将请求拆分为子请求的 ngx_http_slice_module 模块, 每个返回一定范围的响应。 该模块提供了更有效的大响应缓存。 默认情况下不构建此模块。
- –with-http_stub_status_module
启用构建 ngx_http_stub_status_module 模块,该模块提供对基本状态信息的访问。 默认情况下不构建此模块。
- –without-http_charset_module
禁止生成将指定字符集添加到 ngx_http_charset_module 的模块 “Content-Type”响应标头字段 并且还可以将数据从一个字符集转换为另一个字符集。
- –without-http_gzip_module
禁用构建模块 压缩 HTTP 服务器的响应。 需要 zlib 库来构建和运行此模块。
- –without-http_ssi_module
禁止构建在响应中处理 SSI(服务器端包含)命令的 ngx_http_ssi_module 模块 穿过它。
- –without-http_userid_module
禁用构建 ngx_http_userid_module 模块,该模块设置适合客户端标识的 Cookie。
- –without-http_access_module
禁用构建允许限制对某些客户端地址的访问的 ngx_http_access_module 模块。 - –without-http_auth_basic_module
禁止生成允许通过验证用户名来限制对资源的访问的 ngx_http_auth_basic_module 模块 和使用“HTTP 基本身份验证”协议的密码。
- –without-http_mirror_module
禁止构建实现原始请求镜像的 ngx_http_mirror_module 模块 通过创建后台镜像子请求。
- –without-http_autoindex_module
禁用生成处理请求的 ngx_http_autoindex_module 模块 以斜杠字符 (‘’) 结尾并生成 ngx_http_index_module模块的目录列表 找不到索引文件。/
- –without-http_geo_module
禁止生成创建变量的 ngx_http_geo_module 模块 其值取决于客户端 IP 地址。
- –without-http_map_module
禁止生成创建变量的 ngx_http_map_module 模块 其值取决于其他变量的值。
- –without-http_split_clients_module
禁用生成为 A/B 测试创建变量的 ngx_http_split_clients_module 模块。
- –without-http_referer_module
禁止生成 ngx_http_referer_module 模块,该模块可以阻止具有无效值的请求访问站点 在“Referer”标头字段中。
- –without-http_rewrite_module
禁止构建允许 HTTP 服务器重定向请求和更改 URI 的模块 的请求。 生成和运行此模块需要 PCRE 库。
- –without-http_proxy_module
禁用构建 HTTP 服务器代理模块。
- –without-http_fastcgi_module
禁用生成将请求传递到 FastCGI 服务器的 ngx_http_fastcgi_module 模块。
- –without-http_uwsgi_module
禁用生成将请求传递到 UWSGi 服务器的 ngx_http_uwsgi_module 模块。
- –without-http_scgi_module
禁用构建将请求传递到 SCGI 服务器的 ngx_http_scgi_module 模块。
- –without-http_grpc_module
禁用生成将请求传递到 gRPC 服务器的 ngx_http_grpc_module 模块。
- –without-http_memcached_module
禁止构建从 memcached 服务器获取响应的 ngx_http_memcached_module 模块。
- –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
禁止构建发出单像素的模块 透明 GIF。
- –without-http_browser_module
禁止生成 ngx_http_browser_module 模块,该模块创建其值取决于 “User-Agent”请求标头字段。
- –without-http_upstream_hash_module
禁止生成实现哈希负载平衡方法的模块。
- –without-http_upstream_ip_hash_module
禁止生成实现ip_hash负载平衡方法的模块。
- –without-http_upstream_least_conn_module
禁止生成实现least_conn负载平衡方法的模块。
- –without-http_upstream_random_module
禁止构建实现随机负载均衡方法的模块。
- –without-http_upstream_keepalive_module
禁止构建提供缓存的模块 连接到上游服务器。
- –without-http_upstream_zone_module
禁止生成可以存储运行时状态的模块 共享内存区域中的上游组。
- –with-http_perl_module
- –with-http_perl_module=dynamic
支持构建嵌入式 Perl 模块。 默认情况下不构建此模块。
- –with-perl_modules_path=path
定义一个将保存 Perl 模块的目录。
- –with-perl=path
设置 Perl 二进制文件的名称。
- –http-log-path=path
设置 HTTP 服务器的主请求日志文件的名称。 安装后,始终可以使用 access_log 指令在配置文件中更改文件名。 默认情况下,该文件名为 。nginx.confprefix/logs/access.log
- –http-client-body-temp-path=path
定义用于存储临时文件的目录 保存客户端请求正文。 安装后,始终可以使用 client_body_temp_path 指令在配置文件中更改目录。 默认情况下,该目录名为 。nginx.confprefix/client_body_temp
- –http-proxy-temp-path=path
定义用于存储临时文件的目录 使用从代理服务器接收的数据。 安装后,始终可以使用 proxy_temp_path 指令在配置文件中更改目录。 默认情况下,该目录名为 。nginx.confprefix/proxy_temp
- –http-fastcgi-temp-path=path
定义用于存储临时文件的目录 以及从 FastCGI 服务器接收的数据。 安装后,始终可以使用 fastcgi_temp_path 指令在配置文件中更改目录。 默认情况下,该目录名为 。nginx.confprefix/fastcgi_temp
- –http-uwsgi-temp-path=path
定义用于存储临时文件的目录 使用从 UWSGi 服务器接收的数据。 安装后,始终可以使用 uwsgi_temp_path 指令在配置文件中更改目录。 默认情况下,该目录名为 。nginx.confprefix/uwsgi_temp
- –http-scgi-temp-path=path
定义用于存储临时文件的目录 以及从 SCGI 服务器接收的数据。 安装后,始终可以使用 scgi_temp_path 指令在配置文件中更改目录。 默认情况下,该目录名为 。nginx.confprefix/scgi_temp
- –without-http
禁用 HTTP 服务器。
- –without-http-cache
禁用 HTTP 缓存。
- –with-mail
- –with-mail=dynamic
启用 POP3/IMAP4/SMTP 邮件代理服务器。
- –with-mail_ssl_module
允许构建一个模块,将 SSL/TLS 协议支持添加到邮件代理服务器。 默认情况下不构建此模块。 构建和运行此模块需要 OpenSSL 库。
- –without-mail_pop3_module
禁用 POP3 协议 在邮件代理服务器中。
- –without-mail_imap_module
禁用 IMAP 协议 在邮件代理服务器中。
- –without-mail_smtp_module
禁用 SMTP 协议 在邮件代理服务器中。
- –with-stream
- –with-stream=dynamic
支持为通用 TCP/UDP 代理和负载平衡构建流模块。 默认情况下不构建此模块。
- –with-stream_ssl_module
允许构建一个模块,该模块将 SSL/TLS 协议支持添加到流模块。 默认情况下不构建此模块。 构建和运行此模块需要 OpenSSL 库。
- –with-stream_realip_module
启用生成将客户端地址更改为地址的 ngx_stream_realip_module 模块 在 PROXY 协议标头中发送。 默认情况下不构建此模块。
- –with-stream_geoip_module
- –with-stream_geoip_module=dynamic
启用构建ngx_stream_geoip_module模块,该模块根据客户端 IP 地址创建变量 以及预编译的 MaxMind 数据库。 默认情况下不构建此模块。
- –with-stream_ssl_preread_module
启用构建 ngx_stream_ssl_preread_module 模块,该模块允许在不终止 SSL/TLS 的情况下从 ClientHello 消息中提取信息。 默认情况下不构建此模块。
- –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
禁用生成用于 A/B 测试的变量的 ngx_stream_split_clients_module 模块。
- –without-stream_return_module
禁止生成向客户端发送某些指定值的 ngx_stream_return_module 模块 然后关闭连接。
- –without-stream_set_module
禁止生成为变量设置值的 ngx_stream_set_module 模块。
- –without-stream_upstream_hash_module
禁止生成实现哈希负载平衡方法的模块。
- –without-stream_upstream_least_conn_module
禁止生成实现least_conn负载平衡方法的模块。
- –without-stream_upstream_random_module
禁止构建实现随机负载均衡方法的模块。
- –without-stream_upstream_zone_module
禁止生成可以存储运行时状态的模块 共享内存区域中的上游组。
- –with-google_perftools_module
支持构建 ngx_google_perftools_module 模块,该模块允许使用 Google Performance Tools 对 nginx 工作进程进行分析。 该模块面向 nginx 开发人员,默认情况下不构建。
- –with-cpp_test_module
启用构建模块。ngx_cpp_test_module
- –add-module=path
启用外部模块。
- –add-dynamic-module=path
启用外部动态模块。
- –with-compat
启用动态模块兼容性。
- –with-cc=path
设置 C 编译器的名称。
- –with-cpp=path
设置 C 预处理器的名称。
- –with-cc-opt=parameters
设置将添加到 CFLAGS 变量的其他参数。 在 FreeBSD 下使用系统 PCRE 库时, 应该指定。 如果支持的文件数需要 增加也可以在这里指定,如下所示:。–with-cc-opt=“-I /usr/local/include"select()–with-cc-opt=”-D FD_SETSIZE=2048"
- –with-ld-opt=parameters
设置将在链接期间使用的其他参数。 在 FreeBSD 下使用系统 PCRE 库时, 应该指定。–with-ld-opt=“-L /usr/local/lib”
- –with-cpu-opt=cpu
允许按指定的 CPU 进行构建:pentiumpentiumpropentium3pentium4athlonopteronsparc32sparc64ppc64
- –without-pcre
禁用 PCRE 库的使用。
- –with-pcre
强制使用 PCRE 库。
- –with-pcre=path
设置 PCRE 库源的路径。 需要从 PCRE 站点下载并提取库分发。 其余的由 nginx 和 . location 指令中的正则表达式支持需要该库 以及ngx_http_rewrite_module模块。./configuremake
- –with-pcre-opt=parameters
为 PCRE 设置其他生成选项。
- –with-pcre-jit
使用 “实时编译”支持(1.1.12,pcre_jit指令)。
- –without-pcre2
禁用 PCRE2 库 而不是原始 PCRE 库 (1.21.5)。
- –with-zlib=path
设置 zlib 库源的路径。 库发行版(版本 1.1.3 — 1.3) 需要从 zlib 站点下载并解压。 其余的由 nginx 和 . 该库是 ngx_http_gzip_module 模块所必需的。./configuremake
- –with-zlib-opt=parameters
为 zlib 设置其他生成选项。
- –with-zlib-asm=cpu
允许使用优化的 zlib 汇编程序源代码 对于指定的 CPU 之一:、。pentiumpentiumpro
- –with-libatomic
强制使用libatomic_ops库。
- –with-libatomic=path
设置libatomic_ops库源的路径。
- –with-openssl=path
设置 OpenSSL 库源的路径。
- –with-openssl-opt=parameters
为 OpenSSL 设置其他构建选项。
- –with-debug
启用调试日志。
二、通过软件源直接安装
大部分Linux系统软件仓库中,包含了nginx,可以通过对应系统的软件包管理系统直接安装,
- Centos、Kylin等redhat类系统可以使用:
yum install -y nginx
进行安装。 - Ubuntu、Uos等debian类系统可以使用:
apt install -y nginx
进行安装。 - 通过命令安装完后,其nginx的安装路径一般是:
/usr/sbin/nginx
- 其配置文件的路径是:
/etc/nginx/nginx.conf