nginx 설치

nginx는 운영 체제에 따라 다르게 설치할 수 있습니다.


Linux에 설치

Linux의 경우 nginx.org의 nginx 패키지를 사용할 수 있습니다.

FreeBSD에 설치

FreeBSD의 경우 패키지에서 또는 포트 시스템을 통해 nginx를 설치할 수 있습니다. 포트 시스템은 뛰어난 유연성을 제공하여 다양한 옵션 중에서 선택할 수 있습니다. 포트는 지정된 옵션으로 nginx를 컴파일하고 설치합니다.

소스에서 빌드

패키지 및 포트에서 제공하지 않는 일부 특별한 기능이 필요한 경우 소스 파일에서도 nginx를 컴파일 할 수 있습니다. 이 접근 방식은 더 유연하지만, 초보자에게는 복잡할 수 있습니다. 자세한 내용은 소스에서 nginx 빌드를 참조하십시오.


nginx : Linux 패키지

지원되는 배포판 및 버전

nginx 패키지는 다음 Linux 배포판 및 버전에 사용할 수 있습니다.

RHEL/CentOS

버전	           지원 플랫폼
7.4+	           x86_64, ppc64le, aarch64/arm64
8.x	           x86_64, aarch64/arm64, s390x


Debian

버전	           지원 플랫폼
10.x“buster”	   x86_64, i386, aarch64/arm64
11.x“bullseye”     x86_64, aarch64/arm64


Ubuntu

버전	           지원 플랫폼
18.04“bionic”	   x86_64, aarch64/arm64
20.04“focal” 	   x86_64, aarch64/arm64, s390x
21.04“hirsute”     x86_64, aarch64/arm64
21.10“impish”	   x86_64, aarch64/arm64


SLES

버전	           지원 플랫폼
12 SP5+	           x86_64
15 SP2+	           x86_64


Alpine

버전	           지원 플랫폼
3.12	           x86_64, aarch64/arm64
3.13	           x86_64, aarch64/arm64
3.14	           x86_64, aarch64/arm64
3.15	           x86_64, aarch64/arm64


Amazon Linux

버전	           지원 플랫폼
2 (LTS)	           x86_64, aarch64/arm64

설치 지침

새 시스템에 처음으로 nginx를 설치하기 전에 nginx 패키지 리포지토리를 설정해야 합니다. 이후에 리포지토리에서 nginx를 설치하고 업데이트할 수 있습니다.

RHEL/CentOS

다음 전제 조건을 설치합니다.

sudo yum install yum-utils

yum 리포지토리를 설정하려면 다음 콘텐츠를 포함하여 /etc/yum.repos.d/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

기본적으로 안정적인 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

apt에서 패키지 신뢰성을 확인할 수 있도록 공식적인 nginx 서명 키를 가져옵니다. 다음과 같이 키를 가져옵니다.

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

다운로드한 파일에 적절한 키가 포함되어 있는지 확인합니다.

gpg --dry-run --quiet --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>

지문이 다르면 파일을 제거합니다.

안정적인 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

메인라인 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

배포판에서 제공하는 패키지보다 당사 패키지를 선호하도록 리포지토리 고정 설정:

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

apt에서 패키지 신뢰성을 확인할 수 있도록 공식적인 nginx 서명 키를 가져옵니다. 다음과 같이 키를 가져옵니다.

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

다운로드한 파일에 적절한 키가 포함되어 있는지 확인합니다.

gpg --dry-run --quiet --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>

지문이 다르면 파일을 제거합니다.

안정적인 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

메인라인 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

배포판 제공 패키지보다 당사 패키지를 선호하려면 리포지고정 설정:

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 \
    'http://nginx.org/packages/sles/$releasever_major' nginx-stable

메인라인 nginx 패키지를 사용하려면 대신 다음 명령을 실행합니다.

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

다음으로 zypper/rpm에서 패키지 신뢰성을 확인할 수 있도록 공식적인 nginx 서명 키를 가져옵니다. 다음과 같이 키를 가져옵니다.

curl -o /tmp/nginx_signing.key https://nginx.org/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: 2024-06-14]
      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 " \
    "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%s\n" \
    "@nginx " \
    "http://nginx.org/packages/mainline/alpine/v" \
    `egrep -o '^[0-9]+\.[0-9]+' /etc/alpine-release` \
    "/main" \
    | sudo tee -a /etc/apk/repositories

다음으로 apk에서 패키지 신뢰성을 확인할 수 있도록 공식적인 nginx 서명 키를 가져옵니다. 다음과 같이 키를 가져옵니다.

curl -o /tmp/nginx_signing.rsa.pub https://nginx.org/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

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

기본적으로 안정적인 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/ 디렉터리, RHEL/CentOS/SLES/Amazon Linux의 rpm/SPECS/ 또는 Alpine의 alpine/에서 make를 실행합니다.

패키징 소스는 nginx에서 사용하는 동일한 2-clause BSD-like license 아래 배포됩니다.

동적 모듈

기본 nginx 패키지는 추가 종속성을 방지하기 위해 추가 라이브러리가 필요하지 않은 모든 모듈과 함께 빌드됩니다. 버전 1.9.11 이후 nginx는 동적 모듈을 지원하고 다음 모듈은 동적으로 빌드되고 별도의 패키지로 제공됩니다.

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

서명

PGP 키와 패키지는 동일한 서버에 있으므로 동일하게 신뢰할 수 있습니다. 다운로드한 PGP 키의 신뢰성을 추가로 확인하는 것이 좋습니다. PGP에는 “Web of Trust” 개념이 있어서 키가 다른 사람의 키로 서명되면 또 다른 키로 서명되고 이런 식으로 계속 이어집니다. 대부분 임의의 키에서 사용자가 개인적으로 알고 신뢰하는 다른 사람의 키로의 체인이 형성될 수 있으므로 체인의 첫 번째 키의 신뢰성을 확인하십시오. 이 개념은 GPG Mini Howto에서 자세히 설명합니다. 키에는 충분한 서명이 있고 서명의 신뢰성은 상대적으로 확인하기 쉽습니다.