NGINX是一款高性能的HTTP和反向代理服务器,也同样功能强大的邮件代理服务器。因其轻量级以及高并发处理能力而闻名,NGINX特别适用于负载大的网站和应用服务,能有效地提升网站的响应速度和可靠性。作为一个Web服务器,它处理静态内容、索引文件以及自动索引非常出色,并且通过简化的配置和低资源消耗来提高性能。

RooSvbKlAWsOjkz8JPactXH-GPf4Pe6DC3Ue

在反向代理方面,NGINX能够处理传入的网络流量并将其重定向到内部服务器,这样有助于增强后端服务的负载平衡和扩展能力。NGINX通过管理客户端和多个服务器之间的网络流量,在保持高效的同时也确保了网络的安全性。这使得NGINX成为了一个理想的中介工具,用来控制和优化应用程序数据的流向。

此外,NGINX支持各种常见的网络协议,并提供了丰富的模块,可以通过增加模块来扩展其功能。NGINX的配置文件语法简洁明了,使得管理者可以轻松配置和维护。不仅如此,NGINX社区活跃,提供大量的文档和一个庞大的用户基础,这对于解决问题和分享最佳实践非常有帮助。

安装 NGINX 开源

按照所有支持的 Linux 发行版的分步说明,将 NGINX 开源安装为预构建的软件包或从源代码安装。

本文介绍如何安装 NGINX 开源软件。

在稳定版本或主线版本之间进行选择

NGINX 开源有两个版本:

  • 主线 – 包括最新功能和错误修复,并且始终保持最新状态。它是可靠的,但它可能包含一些实验性模块,并且也可能有一些新的错误。
  • 稳定 – 不包括所有最新功能,但具有始终向后移植到主线版本的关键错误修复。我们建议生产服务器使用稳定版本。

在预构建包和从源代码编译之间进行选择

NGINX 开源主线版本和稳定版本都可以通过两种方式安装:

  • 作为预构建的二进制包。这是安装 NGINX 开源的一种快速、简单的方法。该软件包包含几乎所有官方 NGINX 模块,并且可用于大多数流行的操作系统。请参阅安装预构建包。
  • 作为二进制文件,您可以从源代码编译。这种方式更加灵活:您可以添加特定模块,包括第三方模块,或者应用最新的安全补丁。有关详细信息,请参阅从源代码编译和安装。

安装预构建包

从包安装 NGINX 开源比从源代码构建更容易、更快,但从源代码构建使您可以在非标准模块中进行编译。预构建的软件包适用于大多数流行的 Linux 发行版,包括 CentOS、Debian、Red Hat Enterprise Linux (RHEL)、SUSE Linux Enterprise Server (SLES) 和 Ubuntu。请参阅 nginx.org 上的 Linux 软件包以获取当前支持的操作系统列表。

预构建包中包含的模块

有关每个预构建包中包含的模块列表,请参阅 nginx.org 上的源包。

安装预构建的 RHEL、CentOS、Oracle Linux、AlmaLinux、Rocky Linux 软件包

NGINX, Inc. 提供适用于以下 CentOS、Oracle Linux、RHEL、AlmaLinux 和 Rocky Linux 版本的软件包:

 版本  支持的平台
7.4+  x86_64、aarch64/arm64
8x x86_64、aarch64/arm64、s390x
9x x86_64、aarch64/arm64、s390x

该软件包可以从以下位置安装:

  • 默认的 RHEL / CentOS / Oracle Linux / AlmaLinux / Rocky Linux 存储库。这是最快的方法,但通常提供的包已经过时了。
  • 官方存储库位于 nginx.org。您必须第一次设置 yum 存储库,但之后提供的包始终是最新的。

从操作系统存储库安装预构建的 CentOS/RHEL/Oracle Linux/AlmaLinux/Rocky Linux 软件包

  1. 安装 EPEL 存储库:

    sudo yum install epel-release
    
  2.  更新存储库:

    sudo yum update
    
  3. 安装 NGINX 开源:

    sudo yum install nginx
    
  4. 验证安装:

    sudo nginx -v
    

从官方 NGINX 存储库安装预构建的 RHEL/CentOS/Oracle Linux/AlmaLinux/Rocky Linux 软件包

  1. 安装先决条件:

    sudo yum install yum-utils
    
  2. 通过在 /etc/yum.repos.d 中创建文件 nginx.repo,为 RHEL/CentOS/Oracle Linux/AlmaLinux/Rocky Linux 设置 yum 存储库,例如使用 vi :

    sudo vi /etc/yum.repos.d/nginx.repo
    
  3. 将以下行添加到 nginx.repo:

    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    
    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    

    其中 stable 或 mainline 元素指向 NGINX 开源的最新稳定或主线版本。默认情况下,使用稳定 nginx 软件包的存储库。如果您想使用主线 nginx 软件包,请运行以下命令:

    sudo yum-config-manager --enable nginx-mainline
    
  4. 保存更改并退出 vi (按 ESC 并在 : 提示符下键入 wq )。

  5.  更新存储库:

    sudo yum update
    
  6. 安装 NGINX 开源包:

    sudo yum install nginx
    

    当提示您接受 GPG 密钥时,验证指纹是否与 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62 匹配,如果是,则接受。

  7. 启动 NGINX 开源:

    sudo nginx
    
  8. 验证 NGINX 开源代码是否已启动并正在运行:

    curl -I 127.0.0.1
    HTTP/1.1 200 OK
    Server: nginx/1.25.1
    

安装预构建的 Debian 软件包

NGINX 为以下 Debian 操作系统提供软件包:

 版本  代码名称  支持的平台
11.x  靶心  x86_64、aarch64/arm64
12.x  书呆子  x86_64、aarch64/arm64

该软件包可以从以下位置安装:

  • 默认的 Debian 存储库。这是最快的方法,但通常提供的包已经过时了。
  • 官方存储库位于 nginx.org。您必须第一次设置 apt-get 存储库,但之后提供的包始终是最新的。

从操作系统存储库安装预构建的 Debian 软件包

  1. 更新 Debian 存储库信息:

    sudo apt-get update
    
  2. 安装 NGINX 开源包:

    sudo apt-get install nginx
    
  3. 验证安装:

    sudo nginx -v
    

从官方 NGINX 存储库安装预构建的 Debian 软件包

  1. 安装先决条件:

    sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring
    
  2. 导入官方 nginx 签名密钥,以便 apt 可以验证包的真实性。获取密钥:

    curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
        | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
    
  3. 验证下载的文件是否包含正确的密钥:

    gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
    

    输出应包含完整的指纹 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 ,如下所示:

    pub   rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
          573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
    uid                      nginx signing key <signing-key@nginx.com>
    

    如果指纹不同,请删除该文件。

  4. 要为稳定的 nginx 软件包设置 apt 存储库,请运行以下命令:

    echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
    http://nginx.org/packages/debian `lsb_release -cs` nginx" \
        | sudo tee /etc/apt/sources.list.d/nginx.list
    

    如果您想使用 mainline nginx 软件包,请运行以下命令:

    echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
    http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" \
        | sudo tee /etc/apt/sources.list.d/nginx.list
    
  5. 设置存储库固定以优先选择我们的包而不是发行版提供的包:

    echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
        | sudo tee /etc/apt/preferences.d/99nginx
    
  6. 安装 NGINX 包:

    sudo apt update
    sudo apt install nginx
    
  7. 启动 NGINX 开源:

    sudo nginx
    
  8. 验证 NGINX 开源代码是否已启动并正在运行:

    curl -I 127.0.0.1
    HTTP/1.1 200 OK
    Server: nginx/1.25.1
    

安装预构建的 Ubuntu 软件包

NGINX 为以下 Ubuntu 操作系统提供了软件包:

 版本  代码名称  支持的平台
20.04  焦点 x86_64、aarch64/arm64、s390x
22.04  杰米 x86_64、aarch64/arm64、s390x
22.10  动力学  x86_64、aarch64/arm64
23.04  农历  x86_64、aarch64/arm64

该软件包可以从以下位置安装:

  • 默认的 Ubuntu 存储库。这是最快的方法,但通常提供的包已经过时了。
  • 官方存储库位于 nginx.org。您必须第一次设置 apt-get 存储库,但之后提供的包始终是最新的。

从 Ubuntu 存储库安装预构建的 Ubuntu 软件包

  1. 更新 Ubuntu 存储库信息:

    sudo apt-get update
    
  2.  安装包:

    sudo apt-get install nginx
    
  3. 验证安装:

    sudo nginx -v
    

从官方 NGINX 存储库安装预构建的 Ubuntu 软件包

  1. 安装先决条件:

    sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
    
  2. 导入官方 nginx 签名密钥,以便 apt 可以验证包的真实性。获取密钥:

    curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
    
  3. 验证下载的文件是否包含正确的密钥:

    gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
    

    输出应包含完整的指纹 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 ,如下所示:

    pub   rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
      573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
    uid                      nginx signing key <signing-key@nginx.com>
    

    如果指纹不同,请删除该文件。

  4. 要为稳定的 nginx 软件包设置 apt 存储库,请运行以下命令:

    echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
    http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
        | sudo tee /etc/apt/sources.list.d/nginx.list
    

    如果您想使用 mainline nginx 软件包,请运行以下命令:

    echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
    http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" \
        | sudo tee /etc/apt/sources.list.d/nginx.list
    
  5. 设置存储库固定以优先选择我们的包而不是发行版提供的包:

    echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
        | sudo tee /etc/apt/preferences.d/99nginx
    
  6. 安装 NGINX 开源:

    sudo apt update
    sudo apt install nginx
    
  7. 启动 NGINX 开源:

    sudo nginx
    
  8. 验证 NGINX 开源代码是否已启动并正在运行:

    curl -I 127.0.0.1
    HTTP/1.1 200 OK
    Server: nginx/1.25.1
    

安装 SUSE 软件包

NGINX 为 SUSE Linux Enterprise Server 提供了软件包:

 版本  支持的平台
SLES 12 SP5+ x86_64
SLES 15 SP2+ x86_64

从官方 NGINX 存储库安装预构建的 SUSE 软件包

  1. 安装先决条件:

    sudo zypper install curl ca-certificates gpg2
    
  2. 要为稳定的 nginx 软件包设置 zypper 存储库,请运行以下命令:

    sudo zypper addrepo --gpgcheck --type yum --refresh --check \
        'http://nginx.org/packages/sles/$releasever_major' nginx-stable
    
  3. 如果您想使用主线 nginx 软件包,请运行以下命令:

    sudo zypper addrepo --gpgcheck --type yum --refresh --check \
        'http://nginx.org/packages/mainline/sles/$releasever_major' nginx-mainline
    
  4. 导入官方 nginx 签名密钥,以便 zypper/rpm 可以验证包的真实性。获取密钥:

    curl -o /tmp/nginx_signing.key https://nginx.org/keys/nginx_signing.key
    
  5. 验证下载的文件是否包含正确的密钥:

    gpg --with-fingerprint /tmp/nginx_signing.key
    

    输出应包含完整的指纹 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62 ,如下所示:

    pub  2048R/7BD9BF62 2011-08-19 [expires: 2024-06-14]
          Key fingerprint = 573B FD6B 3D8F BC64 1079  A6AB ABF5 BD82 7BD9 BF62
    uid nginx signing key <signing-key@nginx.com>
    
  6. 将密钥导入 rpm 数据库:

    sudo rpmkeys --import /tmp/nginx_signing.key
    
  7. 要安装 nginx,请运行以下命令:

    sudo zypper install nginx
    

安装预构建的 Alpine Linux 软件包

NGINX 为以下 Alpine Linux 操作系统提供软件包:

 版本  支持的平台
3.15  x86_64、aarch64/arm64
3.16  x86_64、aarch64/arm64
3.17  x86_64、aarch64/arm64
3.18  x86_64、aarch64/arm64

该软件包可以从 nginx.org 的官方存储库安装。您必须第一次设置 apt-get 存储库,但之后提供的包始终是最新的。

从官方 NGINX 存储库安装预构建的 Alpine Linux 软件包

  1. 安装先决条件:

    sudo apk add openssl curl ca-certificates
    
  2. 要为稳定的 nginx 软件包设置 apk 存储库,请运行以下命令:

    printf "%s%s%s\n" \
    "http://nginx.org/packages/alpine/v" \
    `egrep -o '^[0-9]+\.[0-9]+' /etc/alpine-release` \
    "/main" \
    | sudo tee -a /etc/apk/repositories
    

    对于主线 nginx 包,请运行以下命令:

    printf "%s%s%s\n" \
    "http://nginx.org/packages/mainline/alpine/v" \
    `egrep -o '^[0-9]+\.[0-9]+' /etc/alpine-release` \
    "/main" \
    | sudo tee -a /etc/apk/repositories
    
  3. 导入官方的 nginx 签名密钥,以便 apk 可以验证包的真实性。获取密钥:

    curl -o /tmp/nginx_signing.rsa.pub https://nginx.org/keys/nginx_signing.rsa.pub
    
  4. 验证下载的文件是否包含正确的密钥:

    openssl rsa -pubin -in /tmp/nginx_signing.rsa.pub -text -noout
    

    输出应包含以下模数:

    Public-Key: (2048 bit)
    Modulus:
        00:fe:14:f6:0a:1a:b8:86:19:fe:cd:ab:02:9f:58:
        2f:37:70:15:74:d6:06:9b:81:55:90:99:96:cc:70:
        5c:de:5b:e8:4c:b2:0c:47:5b:a8:a2:98:3d:11:b1:
        f6:7d:a0:46:df:24:23:c6:d0:24:52:67:ba:69:ab:
        9a:4a:6a:66:2c:db:e1:09:f1:0d:b2:b0:e1:47:1f:
        0a:46:ac:0d:82:f3:3c:8d:02:ce:08:43:19:d9:64:
        86:c4:4e:07:12:c0:5b:43:ba:7d:17:8a:a3:f0:3d:
        98:32:b9:75:66:f4:f0:1b:2d:94:5b:7c:1c:e6:f3:
        04:7f:dd:25:b2:82:a6:41:04:b7:50:93:94:c4:7c:
        34:7e:12:7c:bf:33:54:55:47:8c:42:94:40:8e:34:
        5f:54:04:1d:9e:8c:57:48:d4:b0:f8:e4:03:db:3f:
        68:6c:37:fa:62:14:1c:94:d6:de:f2:2b:68:29:17:
        24:6d:f7:b5:b3:18:79:fd:31:5e:7f:4c:be:c0:99:
        13:cc:e2:97:2b:dc:96:9c:9a:d0:a7:c5:77:82:67:
        c9:cb:a9:e7:68:4a:e1:c5:ba:1c:32:0e:79:40:6e:
        ef:08:d7:a3:b9:5d:1a:df:ce:1a:c7:44:91:4c:d4:
        99:c8:88:69:b3:66:2e:b3:06:f1:f4:22:d7:f2:5f:
        ab:6d
    Exponent: 65537 (0x10001)
    
  5. 将密钥移至 apk 可信密钥存储:

    sudo mv /tmp/nginx_signing.rsa.pub /etc/apk/keys/
    
  6. 要安装 nginx,请运行以下命令:

    sudo apk add nginx
    

    安装带有动态模块的包时还应该指定 @nginx 标签:

    sudo apk add nginx-module-image-filter@nginx nginx-module-njs@nginx
    

安装预构建的 Amazon Linux 软件包

NGINX 提供了以下软件包

  • 亚马逊 Linux 2 (LTS) x86_64、aarch64/arm64
  • 亚马逊 Linux 2023 x86_64、aarch64/arm64

从官方 NGINX 存储库安装预构建的 Alpine Linux 软件包

  1. 安装先决条件:

    sudo yum install yum-utils
    
  2. 要为 Amazon Linux 2 设置 yum 存储库,请使用以下内容创建名为 /etc/yum.repos.d/nginx.repo 的文件:

    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/amzn2/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    
    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/amzn2/$releasever/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    

    要为 Amazon Linux 2023 设置 yum 存储库,请使用以下内容创建名为 /etc/yum.repos.d/nginx.repo 的文件:

    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/amzn/2023/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    
    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/amzn/2023/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    

    默认情况下,使用 stable nginx 包的存储库。如果您想使用 mainline nginx 软件包,请运行以下命令:

    sudo yum-config-manager --enable nginx-mainline
    
  3.  安装nginx:

    sudo yum install nginx
    

    当提示您接受 GPG 密钥时,验证指纹是否与 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62 匹配,如果是,则接受。

从源代码编译和安装

从源代码编译 NGINX 开源提供了比预构建软件包更大的灵活性:您可以添加特定模块(来自 NGINX 或第三方),并应用最新的安全补丁。

安装 NGINX 依赖项

在从源代码编译 NGINX Open Source 之前,您需要为其依赖项安装库:

  • PCRE – 支持正则表达式。 NGINX Core 和 Rewrite 模块需要。

    wget github.com/PCRE2Project/pcre2/releases/download/pcre2-10.42/pcre2-10.42.tar.gz
    tar -zxf pcre2-10.42.tar.gz
    cd pcre2-10.42
    ./configure
    make
    sudo make install
    
  • zlib – 支持标头压缩。 NGINX Gzip 模块需要。

    wget http://zlib.net/zlib-1.2.13.tar.gz
    tar -zxf zlib-1.2.13.tar.gz
    cd zlib-1.2.13
    ./configure
    make
    sudo make install
    
  • OpenSSL – 支持 HTTPS 协议。 NGINX SSL 模块和其他模块需要。

    wget http://www.openssl.org/source/openssl-1.1.1v.tar.gz
    tar -zxf openssl-1.1.1v.tar.gz
    cd openssl-1.1.1v
    ./Configure darwin64-x86_64-cc --prefix=/usr
    make
    sudo make install
    

 下载源代码

从 nginx.org 下载稳定版和主线版的源文件。

要下载并解压最新主线版本的源代码,请运行:

wget https://nginx.org/download/nginx-1.25.1.tar.gz
tar zxf nginx-1.25.1.tar.gz
cd nginx-1.25.1

要下载并解压最新稳定版本的源文件,请运行:

wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar zxf nginx-1.24.0.tar.gz
cd nginx-1.24.0

配置构建选项

配置选项由 ./configure 脚本指定,该脚本设置各种 NGINX 参数,包括源文件和配置文件的路径、编译器选项、连接处理方法和模块列表。该脚本通过创建编译代码和安装 NGINX 开源所需的 Makefile 来完成。

configure 脚本的选项示例(应作为单行键入):

./configure
--sbin-path=/usr/local/nginx/nginx
--conf-path=/usr/local/nginx/nginx.conf
--pid-path=/usr/local/nginx/nginx.pid
--with-pcre=../pcre2-10.42
--with-zlib=../zlib-1.2.13
--with-http_ssl_module
--with-stream
--with-mail=dynamic
--add-module=/usr/build/nginx-rtmp-module
--add-dynamic-module=/usr/build/3party_module

 配置 NGINX 路径

configure 脚本允许您设置 NGINX 二进制文件和配置文件以及 PCRE 或 SSL 等依赖库的路径,以便将它们静态链接到 NGINX 二进制文件。

 范围  描述
--prefix=<PATH> NGINX 文件的目录,以及其他 configure 脚本选项设置的所有相对路径(不包括库路径)的基本位置以及 nginx.conf 配置文件的路径。默认:/usr/local/nginx。
--sbin-path=<PATH> NGINX 可执行文件的名称,仅在安装过程中使用。默认值:**/sbin/nginx
--conf-path=<PATH> NGINX 配置文件的名称。但是,您始终可以在启动时通过使用 nginx 命令行上的 -c <FILENAME> 选项指定不同的文件来覆盖此值。默认值:**conf/nginx.conf
--pid-path=<PATH> nginx.pid文件名,存放 nginx 主进程的进程ID。安装后,可以使用 NGINX 配置文件中的 pid 指令更改文件名的路径。默认值:**/logs/nginx.pid
--error-log-path=<PATH> 错误、警告和诊断数据的主日志文件的名称。安装后,可以使用 NGINX 配置文件中的 error_log 指令更改文件名。默认值:**/logs/error.log
--http-log-path=<PATH> HTTP 服务器请求的主日志文件的名称。安装后,始终可以使用 NGINX 配置文件中的 access_log 指令更改文件名。默认值:**/logs/access.log
--user=<NAME> NGINX 工作进程使用其凭据的非特权用户的名称。安装后,可以使用 NGINX 配置文件中的用户指令更改名称。默认值: nobody
--group=<NAME> NGINX 工作进程使用其凭据的组的名称。安装后,可以使用 NGINX 配置文件中的用户指令更改名称。默认值:由 --user 选项设置的值。
--with-pcre=<PATH> PCRE 库的源路径,这是位置指令和重写模块中的正则表达式支持所必需的。
--with-pcre-jit 构建具有“即时编译”支持(pcre_jit 指令)的 PCRE 库。
--with-zlib=<PATH> zlib 库的源路径,这是 Gzip 模块所需的。

配置 NGINX GCC 选项

使用 configure 脚本,您还可以指定编译器相关的选项。

 范围  描述
--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" 。

指定NGINX连接处理方法

使用 configure 脚本,您可以重新定义基于事件的轮询的方法。有关更多信息,请参阅 NGINX 参考文档中的连接处理方法。

 模块名称  描述
--with-select_module--without-select_module 启用或禁用构建使 NGINX 能够使用 select() 方法的模块。如果平台似乎不支持更合适的方法,例如 kqueue 、 epoll 或 /dev/poll ,则会自动构建模块。
--with-poll_module--without-poll_module 启用或禁用构建使 NGINX 能够使用 poll() 方法的模块。如果平台似乎不支持更合适的方法,例如 kqueue 、 epoll 或 /dev/poll ,则会自动构建该模块。

选择要构建的 NGINX 模块

NGINX 由一组特定于功能的模块组成,这些模块由 configure 脚本以及其他构建选项指定。

某些模块是默认构建的 – 不必使用 configure 脚本指定它们。但是,可以使用 configure 脚本上的 --without-<MODULE-NAME> 选项从 NGINX 二进制文件中显式排除默认模块。

默认情况下未包含的模块以及第三方模块必须与其他构建选项一起在 configure 脚本中显式指定。此类模块可以静态链接到 NGINX 二进制文件(每次 NGINX 启动时都会加载它们),也可以动态链接到 NGINX 二进制文件(仅当 NGINX 配置文件中包含关联指令时才会加载它们)。

默认构建的模块

如果您不需要默认构建的模块,则可以通过使用 configure 脚本上的 --without-<MODULE-NAME> 选项对其进行命名来禁用它,如本例所示,该示例禁用了空 GIF模块(应输入为单行):

./configure
--sbin-path=/usr/local/nginx/nginx
--conf-path=/usr/local/nginx/nginx.conf
--pid-path=/usr/local/nginx/nginx.pid
--with-http_ssl_module
--with-stream
--with-pcre=../pcre2-10.42
--with-zlib=../zlib-1.2.13
--without-http_empty_gif_module
 模块名称  描述
 http_访问模块 接受或拒绝来自指定客户端地址的请求。
http_auth_basic_module 通过使用 HTTP 基本身份验证协议验证用户名和密码来限制对资源的访问。
  http_autoindex_模块 处理以正斜杠字符 (/) 结尾的请求并生成目录列表。
 http_浏览器_模块 创建其值取决于 User-Agent 请求标头的值的变量。
 http_字符集_模块 将指定的字符集添加到 Content-Type 响应标头。可以将数据从一种字符集转换为另一种字符集。
http_empty_gif_module 发出单像素透明 GIF。
  http_fastcgi_模块 将请求传递到 FastCGI 服务器。
  http_geo_模块 创建其值取决于客户端 IP 地址的变量。
  http_gzip_模块 使用 gzip 压缩响应,将传输的数据量减少一半或更多。
  http_limit_conn_模块 限制每个已定义密钥的连接数,特别是来自单个 IP 地址的连接数。
http_limit_req_module 限制每个已定义密钥的请求处理速率,特别是来自单个 IP 地址的请求的处理速率。
 http_map_模块 创建其值取决于其他变量的值的变量。
  http_memcached_模块 将请求传递到 memcached 服务器。
  http_proxy_模块 将 HTTP 请求传递到另一台服务器。
  http_referer_模块 阻止 Referer 标头中包含无效值的请求。
http_rewrite_module 使用正则表达式更改请求 URI 并返回重定向;有条件地选择配置。需要 PCRE 库。
  http_scgi_模块 将请求传递到 SCGI 服务器。
  http_ssi_模块 处理通过它的响应中的 SSI(服务器端包含)命令。
http_split_clients_模块 创建适合 A/B 测试的变量,也称为拆分测试。
http_upstream_hash_module 启用通用哈希负载平衡方法。
http_upstream_ip_hash_module 启用 IP 哈希负载平衡方法。
http_upstream_keepalive_module 启用保活连接。
http_upstream_least_conn_module 启用最少连接负载平衡方法。
http_upstream_zone_module 启用共享内存区域。
  http_userid_模块 设置适合客户端识别的 cookie。
  http_uwsgi_模块 将请求传递到 uwsgi 服务器。

包括默认未构建的模块

许多 NGINX 模块不是默认构建的,必须在 configure 命令行上列出才能构建。

mail、stream、geoip、image_filter、perl 和 xslt 模块可以编译为动态。有关详细信息,请参阅动态模块。

包含非默认模块的 configure 命令示例(应键入单行):

./configure
--sbin-path=/usr/local/nginx/nginx
--conf-path=/usr/local/nginx/nginx.conf
--pid-path=/usr/local/nginx/nginx.pid
--with-pcre=../pcre2-10.42
--with-zlib=../zlib-1.2.13
--with-http_ssl_module
--with-stream
--with-mail
 模块名称  描述
    • --with-cpp_test_module
    • 测试头文件的 C++ 兼容性。
    • --with-debug
    • 启用调试日志。
    • --with-file-aio

    • 启用异步 I/O。

    • 允许使用 Google 性能工具库。

    • -- with-http_addition_module
    • 在响应之前和之后添加文本。
    • -- with-http_auth_request_module
    • 根据子请求的结果实现客户端授权。
    • -- with-http_dav_module
    • 使用 WebDAV 协议实现文件管理自动化。
    • --with-http_degradation_module
    • 当内存大小超过定义值时允许返回错误。
    • -- with-http_flv_module
    • 为 Flash 视频 (FLV) 文件提供伪流服务器端支持。
    • -- with-http_geoip_module
    • 允许创建其值取决于客户端 IP 地址的变量。该模块使用 MaxMind GeoIP 数据库。要编译为单独的动态模块,请将选项更改为 --with-http_geoip_module=dynamic 。
    • -- with-http_gunzip_module
    • 对于不支持 zip 编码方法的客户端,使用 Content-Encoding: gzip 解压缩响应。
    • -- with-http_gzip_static_module
    • 允许发送带有 .gz 文件扩展名的预压缩文件,而不是常规文件。
    • -- with-http_image_filter_module
    • 转换 JPEG、GIF 和 PNG 格式的图像。该模块需要 LibGD 库。要编译为单独的动态模块,请将选项更改为 --with-http_image_filter_module=dynamic 。
    • -- with-http_mp4_module
    • 为 MP4 文件提供伪流服务器端支持。
    • -- with-http_perl_module
    • 用于在 Perl 中实现位置和变量处理程序并将 Perl 调用插入到 SSI 中。需要 PERL 库。要编译为单独的动态模块,请将选项更改为 --with-http_perl_module=dynamic 。
    • -- with-http_random_index_module
    • 处理以斜杠字符(“/”)结尾的请求,并在目录中随机选择一个文件作为索引文件。
    • -- with-http_realip_module
    • 将客户端地址更改为在指定标头字段中发送的地址。
    • -- with-http_secure_link_module
    • 用于检查请求链接的真实性,保护资源免遭未经授权的访问,并限制链接生命周期。
    • -- with-http_slice_module
    • 允许将请求拆分为子请求,每个子请求返回一定范围的响应。提供更有效的大文件缓存。
    • -- with-http_ssl_module
    • 启用 HTTPS 支持。需要 SSL 库,例如 OpenSSL。
    • -- with-http_stub_status_module
    • 提供对基本状态信息的访问。请注意,NGINX Plus 客户不需要此模块,因为他们已经提供了扩展状态指标和交互式仪表板。
    • -- with-http_sub_module
    • 通过用另一个指定字符串替换一个指定字符串来修改响应。
    • -- with-http_xslt_module
    • 使用一个或多个 XSLT 样式表转换 XML 响应。该模块需要 Libxml2 和 XSLT 库。要编译为单独的动态模块,请将选项更改为 --with-http_xslt_module=dynamic 。
    • -- with-http_v2_module
    • 启用对 HTTP/2 的支持。有关详细信息,请参阅 NGINX 博客上的 NGINX 中的 HTTP/2 模块。
    •   -- 带有邮件
    • 启用邮件代理功能。要编译为单独的动态模块,请将选项更改为 --with-mail=dynamic 。
    • -- with-mail_ssl_module
    • 为邮件代理服务器提供支持以使用 SSL/TLS 协议。需要 SSL 库,例如 OpenSSL。
    •   -- 带流
    • 启用 TCP 和 UDP 代理功能。要编译为单独的动态模块,请将选项更改为 --with-stream=dynamic 。
    • -- with-stream_ssl_module
    • 为流代理服务器提供支持以使用 SSL/TLS 协议。需要 SSL 库,例如 OpenSSL。
    • --with-threads
    • 使 NGINX 能够使用线程池。有关详细信息,请参阅 NGINX 中的线程池将性能提升 9 倍!在 NGINX 博客上。

包括第三方模块

您可以通过使用自己的模块或第三方模块编译 NGINX 开源来扩展 NGINX 功能。 NGINX Wiki 中列出了一些第三方模块。使用第三方模块需要您自担风险,因为它们的稳定性得不到保证

静态链接模块

NGINX 开源中内置的大多数模块都是静态链接的:它们在编译时内置于 NGINX 开源中,并静态链接到 NGINX 二进制文件。这些模块只能通过重新编译 NGINX 来禁用。

要使用静态链接的第三方模块编译 NGINX Open Source,请在 configure 命令中包含 --add-module=<PATH> 选项,其中 <PATH> 是源代码的路径(本例针对RTMP模块):

./configure ... --add-module=/usr/build/nginx-rtmp-module
动态链接模块

NGINX 模块还可以编译为共享对象(*.so 文件),然后在运行时动态加载到 NGINX Open Source 中。这提供了更大的灵活性,因为可以通过在 NGINX 配置文件中添加或删除关联的 load_module 指令并重新加载配置来随时加载或卸载模块。请注意,模块本身必须支持动态链接。

要使用动态加载的第三方模块编译 NGINX Open Source,请在 configure 命令中包含 --add-dynamic-module=<PATH> 选项,其中 <PATH> 是源代码的路径:

./configure ... --add-dynamic-module=<PATH>

生成的 *.so 文件将写入 prefix/modules/ 目录,其中 prefix 是服务器文件的目录,例如 /usr/local/nginx/。

要加载动态模块,请在安装后将 load_module 指令添加到 NGINX 配置中:

load_module modules/ngx_mail_module.so;

有关更多信息,请参阅 NGINX 博客上的为 NGINX 和 NGINX Plus 编译第三方动态模块以及 Wiki 上的扩展 NGINX。

从源完成安装

  • 编译并安装构建:

    make
    sudo make install
    
  • 安装完成后,启动NGINX Open Source:

    sudo nginx
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。