Docker로 NGINX 및 NGINX Plus 배포하기

NGINX | 2021년 11월 09일


편집자 – NGINX Plus의 Dockerfile은 최신 소프트웨어 버전을 반영하도록 2021년 11월에 Alpine Linux 및 Debian용으로 업데이트되었습니다. 또한 개정된 지침과 함께 Docker 시크릿을 사용하여 NGINX Plus 이미지를 빌드할 때 라이선스 정보를 전달합니다.

Docker는 분산 애플리케이션을 컨테이너(애플리케이션 실행에 필요한 모든 요소를 포함하는 가볍고 독립적인 실행 가능 소프트웨어 패키지)로 빌드, 배포 및 실행하기 위한 개방형 플랫폼입니다. 컨테이너는 Kubernetes와 같은 컨테이너 오케스트레이션 플랫폼을 통해 배포하고 관리할 수 있습니다. (이 블로그에서 다루는 Docker 컨테이너 기술 외에도 NGINX는 F5 NGINX Ingress Controller를 NGINX Open Source 기반 버전과 NGINX Plus 기반 버전으로 제공합니다. NGINX Plus 구독자에게는 추가 비용 없이 지원이 제공됩니다.)

소프트웨어 애플리케이션인 NGINX Open Source와 F5 NGINX Plus는 Docker를 활용하기에 매우 적합하며, 당사는 Docker 이미지 저장소인 NGINX Open Source 이미지를 Docker Hub에 게시하고 있습니다. 이 게시물에서는 다음 방법을 설명합니다:

소개

Docker 오픈 플랫폼에는 컨테이너를 빌드, 실행 및 오케스트레이션하는 오픈 소스 런타임인 Docker Engine과, 전체 개발자 커뮤니티 또는 특정 조직 내에서 Docker 기반 애플리케이션을 배포하고 공유하며 공동 작업할 수 있는 호스팅 서비스인 Docker Hub가 포함됩니다.

Docker 컨테이너는 애플리케이션을 인프라의 제약으로부터 분리하여 개발자가 애플리케이션의 ‘콘텐츠’에 역량을 집중할 수 있도록 합니다. Docker화된 애플리케이션은 노트북, 베어메탈 서버, VM, 클라우드 등 어떤 인프라로든 즉시 이식할 수 있으므로, 손쉽게 조합하고 재조합하여 모든 기능을 갖춘 분산 애플리케이션을 구축하고 실시간으로 지속적인 혁신을 이어갈 수 있는 모듈식 구성 요소가 됩니다.

Docker에 대한 자세한 내용은 왜 Docker인가요? 또는 전체 Docker 설명서를 참조하세요.

NGINX Open Source Docker 이미지 사용

Docker 컨테이너에서 NGINX Open Source 이미지를 사용하여 NGINX 인스턴스를 생성할 수 있습니다. 이 이미지는 Docker Hub에서 제공됩니다.

아주 간단한 예제부터 시작해 보겠습니다. 컨테이너에서 기본 NGINX 구성을 사용하는 NGINX 인스턴스를 실행하려면 다음 명령을 실행합니다:

# docker run --name mynginx1 -p 80:80 -d nginxfcd1fb01b14557c7c9d991238f2558ae2704d129cf9fb97bb4fadf673a58580d

이 명령은 NGINX 이미지를 기반으로 mynginx1이라는 컨테이너를 생성합니다. 이 명령은 로그 파일 이름에 사용되는 긴 형식의 컨테이너 ID를 반환합니다. 자세한 내용은 로깅 관리를 참조하세요.

The -p 옵션은 NGINX 이미지가 컨테이너에 노출한 포트(포트 80)를 Docker 호스트의 지정된 포트에 매핑하도록 Docker에 지시합니다. 첫 번째 매개변수는 Docker 호스트의 포트를 지정하고, 두 번째 매개변수는 컨테이너에 노출된 포트에 매핑됩니다.

The -d 옵션은 컨테이너가 분리 모드로 실행되도록 지정합니다. 즉, 컨테이너는 중지될 때까지 계속 실행되지만 명령줄에서 실행하는 명령에는 응답하지 않습니다. 다음 섹션에서는 컨테이너와 상호 작용하는 방법을 설명합니다.

컨테이너가 생성되어 실행 중인지 확인하고 포트 매핑을 살펴보기 위해 docker ps를 실행합니다. (읽기 쉽도록 여기서는 출력을 여러 줄로 나누었습니다.)

# docker psCONTAINER ID  IMAGE         COMMAND               CREATED         STATUS        ...  
fcd1fb01b145  nginx:latest  "nginx -g 'daemon of  16 seconds ago  Up 15 seconds ... 

    ... PORTS              NAMES
    ... 0.0.0.0:80->80/tcp mynginx1

출력의 PORTS 필드는 Docker 호스트의 80번 포트가 컨테이너의 80번 포트에 매핑되어 있음을 나타냅니다. NGINX가 실행 중인지 확인하는 또 다른 방법은 해당 포트로 HTTP 요청을 보내는 것입니다. 그러면 기본 NGINX 시작 페이지의 코드가 표시됩니다:

# curl http://localhost<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
 body {
 width: 35em;
 margin: 0 auto;
 font-family: Tahoma, Verdana, Arial, sans-serif;
 }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="https://www.nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

NGINX Docker 컨테이너 사용하기

이제 정상적으로 작동하는 NGINX Docker 컨테이너가 준비되었습니다. 그렇다면 콘텐츠와 NGINX 구성은 어떻게 관리해야 할까요? 로깅은 어떻게 해야 할까요?

SSH에 대한 참고 사항

NGINX 인스턴스에 대한 SSH 액세스를 활성화하는 것이 일반적이지만, Docker 컨테이너는 대개 단일 용도(이 경우 NGINX 실행)로 사용하도록 설계되므로 NGINX 이미지에는 OpenSSH가 설치되어 있지 않습니다. 대신 Docker에서 지원하는 다른 방법을 사용하겠습니다.

다음 명령을 사용하는 대신, 아래 명령을 실행하여 SSH 세션을 시작하지 않고 실행 중인 NGINX 컨테이너에서 대화형 셸을 열 수 있습니다. 단, 이 방법은 고급 사용자에게만 권장합니다.

  • Alpine Linux 시스템의 경우:
# docker exec -it NGINX_container_ID sh
  • Debian 시스템에서는:
# docker exec -it NGINX_container_ID bash

콘텐츠 및 구성 파일 관리

NGINX에서 제공하는 콘텐츠와 NGINX 구성 파일을 관리하는 방법에는 여러 가지가 있습니다. 여기서는 그중 몇 가지 방법을 살펴보겠습니다.

옵션 1 – Docker 호스트에서 콘텐츠 및 구성 관리

컨테이너를 생성할 때 Docker 호스트의 로컬 디렉터리를 컨테이너의 디렉터리에 마운트하도록 Docker에 지정할 수 있습니다. NGINX 이미지는 기본 NGINX 구성을 사용하며, 컨테이너의 루트 디렉터리로 /usr/share/nginx/html을 사용하고 구성 파일은 /etc/nginx에 저장합니다. 로컬 디렉터리 /var/www에 콘텐츠가 있고 /var/nginx/conf에 구성 파일이 있는 Docker 호스트에서는 다음 명령을 실행합니다(여기서는 가독성을 위해 여러 줄로 표시했습니다).

# docker run --name mynginx2 --mount type=bind source=/var/www,target=/usr/share/nginx/html,readonly --mount type=bind,source=/var/nginx/conf,target=/etc/nginx/conf,readonly -p 80:80 -d nginx

이제 Docker 호스트의 로컬 디렉터리인 /var/www 및 /var/nginx/conf에 있는 파일을 변경하면 컨테이너의 /usr/share/nginx/html 및 /etc/nginx 디렉터리에 반영됩니다. readonly 옵션은 이러한 디렉터리를 컨테이너 내부에서는 변경할 수 없고 Docker 호스트에서만 변경할 수 있음을 의미합니다.

옵션 2 – Docker 호스트에서 파일 복사

또 다른 방법은 컨테이너를 생성할 때 Docker가 Docker 호스트의 로컬 디렉터리에서 콘텐츠 및 구성 파일을 복사하도록 하는 것입니다. 컨테이너가 생성된 후에는 파일이 변경될 때 새 컨테이너를 생성하거나 컨테이너 내의 파일을 수정하여 파일을 관리합니다. 파일을 복사하는 간단한 방법은 Docker Hub의 NGINX 이미지를 기반으로 새 Docker 이미지를 생성할 때 실행되는 명령이 포함된 Dockerfile을 만드는 것입니다. COPY 명령으로 파일을 복사할 때 Dockerfile에서 로컬 디렉터리 경로는 Dockerfile이 위치한 빌드 컨텍스트를 기준으로 합니다.

이 예제에서 콘텐츠는 content 디렉터리에 있고 구성 파일은 conf 디렉터리에 있으며, 두 디렉터리 모두 Dockerfile이 있는 디렉터리의 하위 디렉터리입니다. NGINX 이미지에는 기본 NGINX 구성 파일인 /etc/nginx/nginx.conf와 /etc/nginx/conf.d/default.conf가 포함되어 있습니다. 여기서는 호스트의 구성 파일을 대신 사용하려고 하므로 기본 파일을 삭제하는 RUN 명령을 포함합니다:

FROM nginx
RUN rm /etc/nginx/nginx.conf /etc/nginx/conf.d/default.conf
COPY content /usr/share/nginx/html
COPY conf /etc/nginx

다음 명령을 Dockerfile이 있는 디렉터리에서 실행하여 자체 NGINX 이미지를 생성합니다. 명령 끝에 있는 마침표(“.”)에 유의하세요. 이 마침표는 현재 디렉터리를 빌드 컨텍스트로 지정하며, 여기에는 Dockerfile과 복사할 디렉터리가 포함됩니다.

# docker build -t mynginx_image1 .

이제 다음 명령을 실행하여 mynginx3이라는 이름의 컨테이너를 mynginx_image1 이미지를 기반으로 생성합니다:

# docker run --name mynginx3 -p 80:80 -d mynginx_image1

컨테이너의 파일을 변경하려면 옵션 3에 설명된 대로 헬퍼 컨테이너를 사용합니다.

옵션 3 – 컨테이너 내 파일 유지 관리

As mentioned in SSH에 대한 참고 사항에서 설명했듯이, SSH를 사용하여 NGINX 컨테이너에 액세스할 수 없으므로 콘텐츠 또는 구성 파일을 직접 편집하려면 셸 액세스 권한이 있는 도우미 컨테이너를 만들어야 합니다. 도우미 컨테이너가 파일에 액세스할 수 있도록 하려면 이미지에 적절한 Docker 데이터 볼륨이 정의된 새 이미지를 만들어야 합니다. 옵션 2와 같이 파일을 복사하면서 볼륨도 정의하려면 다음 Dockerfile을 사용합니다:

FROM nginxRUN rm /etc/nginx/nginx.conf /etc/nginx/conf.d/default.conf
COPY content /usr/share/nginx/html
COPY conf /etc/nginx
VOLUME /usr/share/nginx/html
VOLUME /etc/nginx

그런 다음 다음 명령을 실행하여 새 NGINX 이미지를 생성합니다(여기서도 마지막 마침표에 유의하세요).

# docker build -t mynginx_image2 .

이제 다음 명령을 실행하여 mynginx4라는 NGINX 컨테이너를 mynginx_image2 이미지를 기반으로 생성합니다:

# docker run --name mynginx4 -p 80:80 -d mynginx_image2

그런 다음 다음 명령을 실행하여 셸이 있는 도우미 컨테이너인 mynginx4_files를 시작합니다. 이를 통해 방금 생성한 mynginx4 컨테이너의 콘텐츠 및 구성 디렉터리에 액세스할 수 있습니다:

# docker run -i -t --volumes-from mynginx4 --name mynginx4_files debian /bin/bashroot@b1cbbad63dd1:/#

새로운 mynginx4_files 헬퍼 컨테이너는 지속적으로 유지되는 표준 입력(-i 옵션)과 tty(-t 옵션)를 사용하여 포그라운드에서 실행됩니다. mynginx4에 정의된 모든 볼륨은 헬퍼 컨테이너에 로컬 디렉터리로 마운트됩니다.

The debian 인수는 도우미 컨테이너가 Docker Hub의 Debian 이미지를 사용한다는 의미입니다. NGINX 이미지도 Debian을 사용하고 지금까지의 모든 예제에서 NGINX 이미지를 사용했으므로, Docker가 다른 운영 체제를 로드하도록 하는 것보다 도우미 컨테이너에 Debian을 사용하는 것이 가장 효율적입니다. /bin/bash 인수는 도우미 컨테이너에서 bash 셸을 실행하여 필요에 따라 파일을 수정할 수 있는 셸 프롬프트를 제공한다는 의미입니다.

컨테이너를 시작하고 중지하려면 다음 명령을 실행합니다:

# docker start mynginx4_files# docker stop mynginx4_files

컨테이너를 계속 실행한 상태로 셸을 종료하려면 Ctrl+p를 누른 다음 Ctrl+q를 누릅니다. 실행 중인 컨테이너의 셸에 다시 접속하려면 다음 명령을 실행합니다:

# docker attach mynginx4_files

셸을 종료하고 컨테이너를 중지하려면 exit 명령을 실행합니다.

로깅 관리

기본 로깅 또는 사용자 지정 로깅을 구성할 수 있습니다.

기본 로깅 사용

NGINX 이미지는 기본적으로 기본 NGINX 액세스 및 오류 로그를 Docker 로그 수집기로 보내도록 구성되어 있습니다. 이를 위해 각 로그를 각각 stdout 및 stderr에 연결합니다. 그러면 두 로그의 모든 메시지가 Docker 호스트의 /var/lib/docker/containers/container-ID/container-ID-json.log 파일에 기록됩니다. 여기서 container‑ID는 컨테이너를 생성할 때 반환되는 전체 형식의 ID입니다. 예를 들어 NGINX Open Source Docker 이미지 사용에서 생성한 초기 컨테이너의 ID는 fcd1fb01b14557c7c9d991238f2558ae2704d129cf9fb97bb4fadf673a58580d입니다.

기존 컨테이너의 컨테이너 ID를 확인하려면 다음 명령을 실행합니다. 여기서 container‑name은 컨테이너를 생성할 때 --name 매개변수로 설정한 값입니다(예를 들어 위 컨테이너 ID의 경우 mynginx1입니다):

# docker inspect --format '{{ .Id }}' container-name

로그를 확인하려면 container-ID-json.log 파일을 직접 열어도 되지만, 일반적으로는 다음 명령어를 실행하는 것이 더 간편합니다:

# docker logs container-name

또한 Docker Engine API를 사용하여 Docker Unix 소켓에 GET 요청을 보내 로그 메시지를 추출할 수 있습니다. 이 명령은 액세스 로그(stdout=1로 표시)와 오류 로그(stderr=1로 표시)를 모두 반환하지만, 각각 별도로 요청할 수도 있습니다:

curl --unix-socket /var/run/docker-sock http://localhost/containers/container-name/logs?stdout=1&stderr=1

다른 쿼리 매개변수에 대해 알아보려면 Docker Engine API 문서를 참조하세요(해당 페이지에서 “Get container logs”를 검색하세요).

사용자 지정 로깅 사용

다른 로그 수집 방법을 구현하거나 특정 구성 블록(예: server{} 및 location{} 블록)에서 로깅을 다르게 구성하려면, 컨테이너에서 로그 파일을 저장할 디렉터리에 Docker 볼륨을 정의하고, 로그 파일에 액세스할 보조 컨테이너를 만든 다음 원하는 로깅 도구를 사용합니다. 이를 구현하려면 로그 파일용 볼륨이 포함된 새 이미지를 만드세요.

예를 들어 NGINX가 로그 파일을 /var/log/nginx/log에 저장하도록 구성하려면 옵션 3의 Dockerfile에서 시작하여 이 디렉터리에 대한 VOLUME 정의만 추가하면 됩니다:

FROM nginxRUN rm /etc/nginx/nginx.conf /etc/nginx/conf.d/default.conf
COPY content /usr/share/nginx/html
COPY conf /etc/nginx
VOLUME /var/log/nginx/log

그런 다음 위에서 설명한 대로 이미지를 생성하고, 이를 사용하여 로깅 디렉터리에 액세스할 수 있는 NGINX 컨테이너와 헬퍼 컨테이너를 만들 수 있습니다. 헬퍼 컨테이너에는 원하는 로깅 도구를 설치할 수 있습니다.

NGINX 제어

NGINX 컨테이너의 명령줄에 직접 액세스할 수 없으므로 nginx 명령으로 NGINX를 제어할 수 없습니다. 다행히 시그널을 사용하여 NGINX를 제어할 수 있으며, Docker는 컨테이너에 시그널을 보내기 위한 kill 명령을 제공합니다.

NGINX 구성을 다시 로드하려면 다음 명령을 실행하세요:

# docker kill -s HUP container-name

NGINX를 다시 시작하려면 다음 명령어를 실행하여 컨테이너를 재시작하세요:

# docker restart container-name

Docker로 NGINX Plus 배포하기

지금까지 NGINX Open Source용 Docker에 대해 살펴보았지만, 상용 제품인 NGINX Plus에서도 Docker를 사용할 수 있습니다. 차이점은 상용 제품인 NGINX Plus가 Docker Hub에서 제공되지 않으므로 먼저 NGINX Plus 이미지를 생성해야 한다는 것입니다. 다행히 이 작업은 매우 간단합니다.

참고: NGINX Plus 이미지를 Docker Hub와 같은 공개 저장소에 절대 업로드하지 마세요. 이는 라이선스 계약을 위반하는 행위입니다.

NGINX Plus Docker 이미지 만들기

NGINX Plus 이미지를 생성하려면 먼저 Dockerfile을 만듭니다. 여기서 제공하는 예제에서는 Alpine Linux 3.14 및 Debian 11(Bullseye)을 기본 Docker 이미지로 사용합니다. NGINX Plus Docker 이미지를 만들기 전에 사용 중인 버전에 해당하는 nginx-repo.crt 및 nginx-repo.key 파일을 다운로드해야 합니다. NGINX Plus 고객은 고객 포털에서 해당 파일을 찾을 수 있으며, NGINX Plus 무료 평가판을 사용 중인 경우에는 평가판 패키지와 함께 제공됩니다. 이 파일들을 Dockerfile이 있는 디렉터리(Docker 빌드 컨텍스트)에 복사합니다.

NGINX Open Source와 마찬가지로, 기본적으로 NGINX Plus 액세스 로그와 오류 로그는 Docker 로그 수집기에 연결됩니다. 볼륨은 지정되어 있지 않지만 원하는 경우 추가할 수 있습니다. 또는 각 Dockerfile을 사용하여 기본 이미지를 만든 다음, 앞서 설명한 대로 볼륨이 지정된 새 이미지를 만들 수 있습니다.

샘플 Dockerfile에는 의도적으로 NGINX Plus 버전을 지정하지 않았으므로, NGINX Plus의 새 릴리스로 업데이트할 때 파일을 수정할 필요가 없습니다. 다만 파일이 특정 버전만 사용하도록 하려는 경우 주석을 해제할 수 있도록 관련 명령어의 버전 지정 형식을 주석으로 포함했습니다.

마찬가지로, NGINX Plus 공식 동적 모듈을 설치하는 명령도 주석 처리된 상태로 포함했습니다.

기본적으로 컨테이너를 생성할 때 Docker 호스트에서 파일이 복사되지 않습니다. 각 COPY 정의를 Dockerfile에 추가하거나, 위에서 설명한 대로 생성한 이미지를 다른 이미지의 기반으로 사용할 수 있습니다.

NGINX Plus Dockerfile(Debian 11)

코드 예제를 로드하는 중…

NGINX Plus Dockerfile(Alpine Linux 3.14)

코드 예제를 로드하는 중…

NGINX Plus 이미지 생성

With the Dockerfile, nginx-repo.crt 및 nginx-repo.key 파일이 같은 디렉터리에 있는 상태에서 해당 디렉터리에서 다음 명령을 실행하여 nginxplus라는 Docker 이미지를 생성합니다(앞서와 마찬가지로 마지막 마침표에 유의하세요):

# DOCKER_BUILDKIT=1 docker build --no-cache -t nginxplus --secret id=nginx-crt,src=your_cert_file --secret id=nginx-key,src=your_key_file .

The DOCKER_BUILDKIT=1 플래그는 이미지를 빌드하는 데 Docker BuildKit을 사용하고 있음을 나타냅니다. 이는 아래에서 설명하는 --secret 옵션을 포함할 때 필요합니다.

The --no-cache 옵션은 Docker가 이미지를 처음부터 빌드하도록 하여 최신 버전의 NGINX Plus가 설치되도록 합니다. 이전에 Dockerfile을 사용하여 이미지를 빌드한 적이 있는데 --no-cache 옵션을 포함하지 않으면 새 이미지는 Docker 캐시에 있는 NGINX Plus 버전을 사용합니다. 앞서 설명했듯이 NGINX Plus가 새로 릴리스될 때마다 파일을 변경할 필요가 없도록 Dockerfile에 NGINX Plus 버전을 의도적으로 지정하지 않습니다. 이전에 빌드한 이미지의 NGINX Plus 버전을 사용해도 괜찮다면 --no-cache 옵션을 생략하십시오.

The --secret 옵션은 데이터가 노출되거나 Docker 빌드 레이어 간에 유지될 위험 없이 NGINX Plus 라이선스의 인증서와 키를 Docker 빌드 컨텍스트에 전달합니다. id 인수의 값은 기본 Dockerfile을 수정하지 않고는 변경할 수 없지만, src 인수는 NGINX Plus 인증서 및 키 파일의 경로로 설정해야 합니다(이전 지침을 따랐다면 Docker 이미지를 빌드하는 디렉터리와 동일한 디렉터리).

다음과 같은 출력은 docker images nginxplus 명령으로 이미지가 성공적으로 생성되었음을 나타냅니다:

# docker images nginxplus
REPOSITORY  TAG     IMAGE ID      CREATED        VIRTUAL SIZE
nginxplus   latest  ef2bf65931cf  6 seconds ago  91.2 MB

이 이미지를 기반으로 mynginxplus라는 이름의 컨테이너를 생성하려면 다음 명령을 실행합니다:

# docker run --name mynginxplus -p 80:80 -d nginxplus

NGINX Plus 컨테이너는 NGINX Open Source 컨테이너와 동일한 방식으로 제어하고 관리할 수 있습니다.

요약

NGINX, NGINX Plus 및 Docker는 함께 사용할 때 매우 뛰어난 성능을 발휘합니다. Docker Hub의 NGINX Open Source 이미지를 사용하든 자체 NGINX Plus 이미지를 만들든, Docker 컨테이너에서 NGINX 및 NGINX Plus의 새 인스턴스를 손쉽게 실행하고 Kubernetes 환경에 배포할 수 있습니다. 또한 기본 이미지로 새 Docker 이미지를 간편하게 만들어 컨테이너를 더욱 쉽게 제어하고 관리할 수 있습니다. Docker 컨테이너에서 실행되는 모든 NGINX Plus 인스턴스가 구독 적용 대상인지 확인하세요. 자세한 내용은 NGINX 영업팀에 문의하세요.

Docker에는 이 글에서 다룬 내용 외에도 훨씬 더 많은 기능이 있습니다. 자세한 내용은 무료 O’Reilly 전자책인 컨테이너 네트워킹: Docker에서 Kubernetes까지을 다운로드하거나 www.docker.com에서 확인하세요.

관련 문서

Docker에 NGINX 및 NGINX Plus 배포


공유
태그: F5 NGINX, 2021, Tech

작성자 소개

Rick Nelson
Rick Nelson솔루션 엔지니어링 지역 담당 부사장

Rick Nelson의 다른 블로그 게시물

관련 블로그 게시물

시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric
NGINX | 2023. 11. 30.

시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric

이 영상에서는 KubeCon의 NGINX 부스를 찾아가, 저희가 공개한 Kubernetes Gateway API 구현을 살펴봅니다.

F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법
NGINX | 2023. 03. 23.

F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법

앱 보안을 강화하는 두 가지 방법을 소개합니다. NGINX Management Suite를 통해 WAF 운영에 대한 가시성을 높이고, NGINX App Protect WAF를 활용해 코드형 보안을 구현하는 것입니다.

Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션
NGINX | 2021. 09. 27.

Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션

개발 주체, 개발 철학, 프로덕션 환경 준비도, 보안 및 지원을 기준으로 어떤 NGINX Ingress 컨트롤러가 가장 적합한지 알아보세요.

진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법
NGINX | 2021. 07. 06.

진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법

NGINX App Protect Denial of Service(DoS)가 계층 7 DoS 공격을 방어하기 위해 완화 방법을 실시간으로 조정하는 방식을 설명합니다. 정상적인 사용자 행동과 서버 상태에 대한 모델을 생성하여 공격을 나타내는 이상 징후를 감지하고 맞춤형 완화 시그니처를 적용할 수 있습니다.

NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리
NGINX | 2021. 06. 30.

NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리

NGINX Instance Manager 버전 1.0에는 두 가지 새로운 기능이 도입되었습니다. NGINX 인스턴스에 태그와 사용자 역할을 지정하면 전체 그룹에 구성을 한 번에 적용할 수 있습니다. 인증서 검사는 만료 예정인 인증서를 감지하여 서비스 중단을 방지할 수 있도록 인증서를 교체할 수 있게 해줍니다.

Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유
NGINX | 2015. 03. 25.

Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유

Netflix가 글로벌 콘텐츠 전송 네트워크인 Open Connect의 스트리밍 미디어 기술로 NGINX를 선택한 이유를 NGINX 개발자 Gleb Smirnoff에게서 알아보세요.