nginx: Linux 套件

支援的發行版和版本
安裝說明
     RHEL 和衍生版本
     Debian
     Ubuntu
     SLES
     Alpine
     Amazon Linux
原始碼套件
動態模組
簽名

支援的發行版和版本

nginx 套件適用於下列 Linux 發行版和版本

RHEL 和衍生版本

版本 支援的平台
8.x x86_64, aarch64/arm64
9.x x86_64, aarch64/arm64

Debian

版本 支援的平台
11.x “bullseye” x86_64, aarch64/arm64
12.x “bookworm” x86_64, aarch64/arm64

Ubuntu

版本 支援的平台
20.04 “focal” x86_64, aarch64/arm64
22.04 “jammy” x86_64, aarch64/arm64
24.04 “noble” x86_64, aarch64/arm64
24.10 “oracular” x86_64, aarch64/arm64

SLES

版本 支援的平台
15 SP2+ x86_64

Alpine

版本 支援的平台
3.18 x86_64, aarch64/arm64
3.19 x86_64, aarch64/arm64
3.20 x86_64, aarch64/arm64

Amazon Linux

版本 支援的平台
2 (LTS) x86_64, aarch64/arm64
2023 x86_64, aarch64/arm64

安裝說明

在新的機器上第一次安裝 nginx 之前,您需要設定 nginx 套件儲存庫。之後,您可以從儲存庫安裝和更新 nginx。

RHEL 和衍生版本

本節適用於 Red Hat Enterprise Linux 及其衍生版本,例如 CentOS、Oracle Linux、Rocky Linux、AlmaLinux。

安裝先決條件

sudo yum install yum-utils

若要設定 yum 儲存庫,請建立一個名為 /etc/yum.repos.d/nginx.repo 的檔案,內容如下

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

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

預設情況下,會使用穩定版 nginx 套件的儲存庫。如果您想使用主線版 nginx 套件,請執行以下命令

sudo yum-config-manager --enable nginx-mainline

若要安裝 nginx,請執行以下命令

sudo yum install nginx

當提示接受 GPG 金鑰時,請確認指紋與 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62 相符,如果相符,請接受它。

Debian

安裝先決條件

sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring

匯入官方 nginx 簽署金鑰,以便 apt 可以驗證套件的真實性。擷取金鑰

curl https://nginx.dev.org.tw/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

驗證下載的檔案是否包含正確的金鑰

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: 2027-05-24]
      573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid                      nginx signing key <signing-key@nginx.com>

請注意,輸出可能包含其他用於簽署套件的金鑰。

若要設定穩定版 nginx 套件的 apt 儲存庫,請執行以下命令

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

如果您想使用主線版 nginx 套件,請改為執行以下命令

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

設定儲存庫固定,以優先使用我們的套件,而不是發行版提供的套件

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

若要安裝 nginx,請執行以下命令

sudo apt update
sudo apt install nginx

Ubuntu

安裝先決條件

sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring

匯入官方 nginx 簽署金鑰,以便 apt 可以驗證套件的真實性。擷取金鑰

curl https://nginx.dev.org.tw/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

驗證下載的檔案是否包含正確的金鑰

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: 2027-05-24]
      573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid                      nginx signing key <signing-key@nginx.com>

請注意,輸出可能包含其他用於簽署套件的金鑰。

若要設定穩定版 nginx 套件的 apt 儲存庫,請執行以下命令

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

如果您想使用主線版 nginx 套件,請改為執行以下命令

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

設定儲存庫固定,以優先使用我們的套件,而不是發行版提供的套件

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

若要安裝 nginx,請執行以下命令

sudo apt update
sudo apt install nginx

SLES

安裝先決條件

sudo zypper install curl ca-certificates gpg2

若要設定穩定版 nginx 套件的 zypper 儲存庫,請執行以下命令

sudo zypper addrepo --gpgcheck --type yum --refresh --check \
    'https://nginx.dev.org.tw/packages/sles/$releasever_major' nginx-stable

如果您想使用主線版 nginx 套件,請改為執行以下命令

sudo zypper addrepo --gpgcheck --type yum --refresh --check \
    'https://nginx.dev.org.tw/packages/mainline/sles/$releasever_major' nginx-mainline

接下來,匯入官方 nginx 簽署金鑰,以便 zypper/rpm 可以驗證套件的真實性。擷取金鑰

curl -o /tmp/nginx_signing.key https://nginx.dev.org.tw/keys/nginx_signing.key

驗證下載的檔案是否包含正確的金鑰

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

輸出應包含完整的指紋 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62,如下所示

pub  2048R/7BD9BF62 2011-08-19 [expires: 2027-05-24]
      Key fingerprint = 573B FD6B 3D8F BC64 1079  A6AB ABF5 BD82 7BD9 BF62
uid nginx signing key <signing-key@nginx.com>

最後,將金鑰匯入 rpm 資料庫

sudo rpmkeys --import /tmp/nginx_signing.key

若要安裝 nginx,請執行以下命令

sudo zypper install nginx

Alpine

安裝先決條件

sudo apk add openssl curl ca-certificates

若要設定穩定版 nginx 套件的 apk 儲存庫,請執行以下命令

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

如果您想使用主線版 nginx 套件,請改為執行以下命令

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

接下來,匯入官方 nginx 簽署金鑰,以便 apk 可以驗證套件的真實性。擷取金鑰

curl -o /tmp/nginx_signing.rsa.pub https://nginx.dev.org.tw/keys/nginx_signing.rsa.pub

驗證下載的檔案是否包含正確的金鑰

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)

最後,將金鑰移至 apk 信任金鑰儲存區

sudo mv /tmp/nginx_signing.rsa.pub /etc/apk/keys/

若要安裝 nginx,請執行以下命令

sudo apk add nginx@nginx

使用動態模組安裝套件時,也應指定 @nginx 標籤

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

Amazon Linux

安裝先決條件

sudo yum install yum-utils

若要為 Amazon Linux 2 設定 yum 儲存庫,請建立一個名為 /etc/yum.repos.d/nginx.repo 的檔案,內容如下

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

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

若要為 Amazon Linux 2023 設定 yum 儲存庫,請建立一個名為 /etc/yum.repos.d/nginx.repo 的檔案,內容如下

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

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

預設情況下,會使用穩定版 nginx 套件的儲存庫。如果您想使用主線版 nginx 套件,請執行以下命令

sudo yum-config-manager --enable nginx-mainline

若要安裝 nginx,請執行以下命令

sudo yum install nginx

當提示接受 GPG 金鑰時,請確認指紋與 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62 相符,如果相符,請接受它。

原始碼套件

套件原始碼可在套件原始碼儲存庫中找到。

default 分支包含目前主線版本的套件原始碼,而 stable-* 分支包含穩定版最新版本的原始碼。若要建置二進位套件,請在 Debian/Ubuntu 上於 debian/ 目錄中執行 make,或在 RHEL 及其衍生版本、SLES 和 Amazon Linux 上於 rpm/SPECS/ 中執行,或在 Alpine 上於 alpine/ 中執行。

套件原始碼以 nginx 使用的相同2 條款 BSD 類似授權發佈。

動態模組

主要 nginx 套件會與所有不需要額外函式庫的模組一起建置,以避免額外的相依性。自 1.9.11 版起,nginx 支援動態模組,以下模組會以動態方式建置並作為個別套件發佈

nginx-module-geoip
nginx-module-image-filter
nginx-module-njs
nginx-module-perl
nginx-module-xslt

此外,自 1.25.3 版起,以下模組會作為個別套件發佈

nginx-module-otel

簽名

由於我們的PGP 金鑰和套件位於同一台伺服器上,因此它們同樣受到信任。強烈建議您額外驗證下載的 PGP 金鑰的真實性。PGP 有「信任網路」的概念,當一個金鑰由其他人的金鑰簽署時,該金鑰又由另一個金鑰簽署,依此類推。這通常可以從任意金鑰建立一個鏈結,連結到您認識且個人信任的人的金鑰,從而驗證鏈結中第一個金鑰的真實性。此概念在 GPG Mini Howto 中有詳細說明。我們的金鑰有足夠的簽名,而且其真實性相對容易檢查。