15년여 전 처음 출시된 이래 NGINX의 인기는 꾸준히 높아져, 이제는 세계에서 가장 인기 있는 웹 서버로 자리 잡았으며, [ngx_snippet name=’number-sites’]개의 웹사이트를 지원하고 있습니다. 이런 경우에는 대세를 따라 모든 웹 서비스 요구 사항에 NGINX를 사용하고, 더 나아가 리버스 프록시, 콘텐츠 캐시, 로드 밸런서, API 게이트웨이 등으로서의 기능도 활용하는 것이 현명하다고 생각합니다.
이 블로그 게시물에서는 개인용 컴퓨터의 설정에 영향을 주지 않는 간편한 환경에서 Amazon Web Services(AWS)의 Ubuntu 20.04에 NGINX를 설치하고 실행하는 방법을 안내합니다. NGINX와 NGINX Plus를 모두 다루며, NGINX Plus는 엔터프라이즈급 추가 기능과 상용 지원을 제공하는 버전입니다.
여기에 제시된 단계를 완료한 후에는 NGINX Core 교육(강사 진행 또는 온디맨드)을 이어서 수강해 보세요. 이 종일 과정에서는 NGINX를 구성, 운영 및 관리하는 방법을 배울 수 있습니다. 또한 이 과정은 강사 진행 방식과 자기 주도 방식으로 제공되는 다른 고급 주제 과정을 수강하는 데 필요한 기초를 다져 줍니다.
이 튜토리얼에는 다음 작업에 대한 지침이 포함되어 있습니다:
터미널에 액세스하기
이 튜토리얼을 진행하려면 Amazon Elastic Compute Cloud(EC2) 인스턴스에 연결할 터미널이 필요합니다. Mac에는 터미널이 기본으로 제공되지만, Windows 사용자는 PuTTY 또는 이와 유사한 도구를 다운로드해야 합니다. 자체 로컬 터미널을 사용하여 NGINX 또는 NGINX Plus를 설정하고 웹 콘텐츠를 제공하려면 AWS 설정으로 건너뛰어도 됩니다.
macOS에서 터미널에 액세스하기
Mac에서는 내장된 터미널 도구를 사용하여 이 튜토리얼의 모든 내용을 따라 할 수 있습니다.
- 화면 상단 표시줄 오른쪽 끝에 있는 돋보기 아이콘을 클릭합니다.
- 팝업 상자에
terminal을 입력하고 Enter 키를 누릅니다. 별도의 터미널 창이 열립니다.
Windows에서 터미널에 액세스하기
Windows에는 기본 제공 터미널이 없으므로 인터넷에서 다운로드해야 합니다. AWS와 마찬가지로 전 세계에서 사용되는 ssh 클라이언트인 PuTTY를 권장합니다.
- Access the PUTTY 다운로드 페이지에 접속합니다.
- 원하는 위치에 파일을 다운로드하여 설치한 다음 엽니다. 단, AWS 설정의 단계를 완료하기 전까지는 실제 터미널에 액세스할 수 없습니다.
AWS 설정
이 튜토리얼에서는 Amazon Virtual Private Cloud (VPC)가 있으며, 대부분의 계정에서 생성되는 기본 VPC 구성을 그대로 사용할 수 있다고 가정합니다. 이 섹션에서는 EC2 인스턴스를 생성하고 연결하여 AWS 배포 환경을 설정합니다.
참고: 다음 EC2 인스턴스 생성 절차와 스크린샷은 작성 시점에 확인된 내용이지만 AWS에 의해 변경될 수 있습니다. 필요에 따라 지침을 조정하십시오.
- On the AWS 홈페이지에서 (AWS Management) Console에 로그인하거나, 필요한 경우 먼저 새 계정을 생성합니다.
- 콘솔 제목 표시줄에서 Services를 클릭한 다음, Compute 섹션에서 EC2를 클릭합니다.

- 열리는 EC2 대시보드 페이지에서 Launch Instance 버튼을 클릭합니다.
- On the 1단계 페이지의 Ubuntu Server 20.04 LTS(HVM), SSD 볼륨 유형 행에서 선택 버튼을 클릭하고 기본 64비트(x86) 아키텍처 선택을 유지합니다.

- On the 2단계 페이지에서 t2.micro 인스턴스 유형을 선택합니다. 이 글을 작성하는 현재 무료 티어 사용 가능으로 표시되어 있으며 기본적으로 선택되어 있습니다. 다음: 인스턴스 세부 정보 구성 버튼을 클릭합니다.

- On the 3단계 페이지에서 사용하려는 VPC가 네트워크 필드에 선택되어 있고, 퍼블릭 IP 자동 할당 필드가 기본값인 서브넷 설정 사용(활성화) 또는 활성화로 설정되어 있는지 확인합니다. 나머지 설정은 기본값으로 둡니다.

- 페이지 상단에서 6. Configure Security Group을 클릭합니다.
- On the 6단계 페이지에서 다음 단계에 따라 수신 HTTP 및 HTTPS 트래픽을 허용합니다(기본적으로 EC2 인스턴스는 SSH 트래픽만 허용함).

- 표 아래의 규칙 추가 버튼을 클릭한 다음, 유형 열의 드롭다운 메뉴에서 HTTP를 선택합니다. 이 튜토리얼에서는 모든 IP 주소에서의 액세스를 허용합니다(소스 열의 값은 Anywhere 0.0.0.0/0, ::/0입니다). 프로덕션 환경에서는 보안 그룹을 사용하여 액세스를 제어하도록 명시한 페이지의 경고를 따르는 것이 좋습니다.
- HTTPS에 대해서도 이전 단계를 반복합니다.
- 페이지 하단의 검토 및 시작 버튼을 클릭합니다.
- On the 7단계 페이지에서 하단의 시작 버튼을 클릭합니다.
- 팝업 상자에서 새 키 페어를 생성합니다.

- 상단 드롭다운 메뉴에서 새 키 페어 생성을 선택합니다.
- 키 페어 유형을 선택합니다. 이 튜토리얼에서는 RSA를 선택합니다.
- 키 페어 이름 필드에 NGINX_key와 같은 이름을 입력합니다.
- 키 페어 다운로드 버튼을 클릭합니다.
- 아래의 애니메이션 스크린샷과 같이 Download Key Pair 버튼이 확인란으로 바뀝니다. 개인 키에 액세스할 수 있음을 나타내려면 이 확인란을 클릭합니다.
- Launch Instances 버튼을 클릭합니다.
- 파일 관리자 유틸리티에서 다운로드한 .pem 파일(이 튜토리얼에서는 NGINX_key.pem)을 안전한 위치로 이동합니다. 이 튜토리얼에서는 해당 파일을 /Desktop/NGINX 디렉터리에 저장합니다.
- Windows 터미널을 사용하는 경우 AWS 지침에 따라 PuTTYgen 유틸리티를 다운로드하고 .pem 파일을 .ppk 파일로 변환합니다.
- On the 시작 상태 페이지 하단의 인스턴스 보기 버튼을 클릭합니다.
- 열리는 인스턴스 페이지의 표에 새 인스턴스가 표시됩니다. 인스턴스에 이름을 지정합니다.

- Click the pencil icon in the 이름 열에서 연필 아이콘을 클릭합니다.
- Type the name in the 이름 편집 팝업 상자에 이름을 입력하고 저장 버튼을 클릭합니다.
- 화면 상단의 연결 버튼을 클릭합니다. 다음과 같은 창이 나타납니다. SSH 클라이언트 탭을 열고 지침에 따라 인스턴스에 연결합니다. Windows를 사용하는 경우 명령에서 .ppk를 .pem 대신 사용합니다.

NGINX 소프트웨어 설치
이제 AWS 환경 설정이 완료되었으므로 NGINX Open Source 또는 NGINX Plus를 설치할 차례입니다. NGINX Plus는 30일 동안 무료로 사용해 볼 수 있습니다. 이 튜토리얼에서는 두 옵션 모두 사용할 수 있지만, NGINX Plus의 고급 기능을 더 자세히 살펴보려면 무료 평가판을 신청하세요.
NGINX Open Source 설치
대부분의 Linux 배포판과 BSD 변형은 표준 패키지 저장소에서 NGINX Open Source를 제공하지만, 대개 최신 버전은 아닙니다. NGINX Open Source는 nginx.org에서 직접 다운로드하는 것이 좋습니다. Ubuntu 패키지 관리자(apt)에 NGINX 저장소를 추가하려면 몇 가지 단계만 더 수행하면 됩니다.
NGINX Open Source를 설치하려면 다음 단계를 따르세요:
- 터미널에 접속합니다.
- NGINX 서명 키를 다운로드합니다:
$ sudo wget http://nginx.org/keys/nginx_signing.key- 키를 추가합니다:
$ sudo apt-key add nginx_signing.key- 디렉터리를 /etc/apt(으)로 변경합니다.
$ cd /etc/apt- Edit the sources.list 파일을 편집하고 끝에 다음 텍스트를 추가합니다:
deb http://nginx.org/packages/ubuntu focal nginx
deb-src http://nginx.org/packages/ubuntu focal nginx- 참고: 각 줄의
focal키워드는 Ubuntu 20.04에 해당합니다. 다른 버전의 Ubuntu를 사용하는 경우 해당 릴리스의 코드명에서 첫 번째 단어로 바꾸세요(예: Ubuntu 18.04의 경우bionic). - NGINX 소프트웨어를 업데이트합니다:
$ sudo apt-get update- NGINX를 설치합니다:
$ sudo apt-get install nginx- 메시지가 표시되면
Y를 입력합니다. - NGINX를 시작합니다:
$ sudo systemctl start nginx.service- 상태를 확인합니다:
$ sudo systemctl status nginx.service- 다음 단계로 이동하세요: 웹 페이지 열기.
NGINX Plus 설치
- 아직 NGINX Plus를 사용하고 있지 않다면 30일 무료 평가판을 신청하세요.
- 평가판 구독을 사용할 수 있다는 이메일 알림을 받으면 안내된 지침에 따라 보안 인증서, 개인 키 및 JWT를 다운로드한 다음 NGINX Plus를 설치하세요.
- 설치가 완료되고 NGINX Plus가 실행되면 웹 페이지 열기로 계속 진행합니다.
웹 페이지 열기
이제 NGINX 소프트웨어를 시작했으므로, 사이트의 콘텐츠를 제공하도록 구성하기 전에 NGINX와 NGINX Plus가 기본적으로 제공하는 웹 페이지를 살펴보세요. 다음 단계를 따르세요:
- 아직 EC2 대시보드의 인스턴스 탭에 있지 않다면 해당 탭으로 이동합니다. (상단 콘솔 탐색 모음에서 서비스, 컴퓨팅 섹션에서 EC2, 왼쪽 탐색 열에서 인스턴스를 차례로 클릭하는 방법도 있습니다.)
- 테이블을 오른쪽으로 스크롤하여 퍼블릭 IPv4 주소 열에서 인스턴스의 퍼블릭 IP 주소를 확인합니다(스크린샷에서는 3.22.51.xxx). 해당 주소를 선택하여 클립보드에 복사합니다.

- 새 브라우저 탭을 열고 주소 표시줄에 주소를 붙여넣습니다. 기본 Welcome to nginx! 페이지가 나타나면 NGINX가 설치되어 실행 중이지만 아직 구성되지 않았음을 의미합니다.

샘플 파일 설정
정상적으로 작동하는 NGINX 또는 NGINX Plus를 설치했으니 이제 제대로 활용해 볼 차례입니다! 먼저 몇 가지 파일과 디렉터리를 설정하세요.
- 아직 홈 디렉터리에 있지 않다면 홈 디렉터리로 이동합니다. 다음 지침에서는 홈 디렉터리가 /home/ubuntu입니다.
- Create a directory called public_html 디렉터리를 생성하고 해당 디렉터리로 이동합니다.
- In the public_html 디렉터리에 index.html이라는 파일과 application1이라는 디렉터리를 만듭니다.
- In the application1 디렉터리에 app1.html이라는 파일을 만들고 텍스트를 입력합니다.
- 홈 디렉터리로 다시 이동합니다.
- 다음 이름의 디렉터리를 만듭니다: data.
- In the data 디렉터리 안에 images라는 디렉터리를 만듭니다.
페이지 및 이미지 제공
NGINX 또는 NGINX Plus의 첫 번째 사용 사례는 웹 페이지를 통해 사용자에게 페이지와 이미지를 제공하는 것입니다.
- 디렉터리를 /etc/nginx/conf.d(으)로 변경합니다.
- Rename default.conf의 이름을 default.conf.bak으로 변경하여 NGINX 또는 NGINX Plus가 이 파일을 기본 구성 파일로 사용하지 못하도록 합니다.
- 다음 구성으로 server1.conf 파일을 만듭니다:
server { root /home/ubuntu/public_html;
location /application1 { }
location /images {
root /home/ubuntu/data;
}
}- 지시어 문서:
location,root,server - 디렉터리를 ~/data/images(으)로 변경합니다.
- 제공하려는 이미지를 찾아 다음 디렉터리에 복사합니다(~/data/images). 예를 들어 다음 명령은 NGINX 로고를 복사합니다:
$ curl -o NGINX-logo.png https://www.nginx.com/wp-content/uploads/2021/11/NGINX-logo-2020.png- NGINX 또는 NGINX Plus를 다시 로드합니다:
$ sudo nginx -s reload- 웹 브라우저에서 다음 URL로 이미지를 요청합니다. 여기서 NGINX-server는 EC2 인스턴스의 퍼블릭 IP 주소입니다: https://NGINX-server/images/NGINX-logo.png
- 또한 애플리케이션에 접속하여 어떤 결과가 표시되는지 확인합니다. https://NGINX-server/application1/app1.html
프록시 서버 설정
이제 웹 서버가 정상적으로 작동하므로, 트래픽을 라우팅하도록 구성하는 방법을 알아볼 차례입니다. 이 기능을 사용하면 트래픽을 다른 서버로 전달할 수 있으며, 로드 밸런싱을 설정하는 데 중요한 단계입니다. 다음 단계를 따르세요:
- In the ~/data 디렉터리에 server2라는 디렉터리를 만듭니다.
- In the server2 디렉터리에 sampleApp이라는 디렉터리를 만듭니다.
- In the sampleApp 디렉터리에 index.html이라는 파일을 만들고 텍스트를 입력합니다.
- 디렉터리를 /etc/nginx/conf.d로 변경합니다.
- 다음 구성을 포함하는 server2.conf 파일을 만듭니다:
server { listen 8080;
root /home/ubuntu/data/server2;
}server { root /home/ubuntu/public_html;
location /application1 {
proxy_pass http://localhost:8080/sampleApp;
}
location /images {
root /home/ubuntu/data;
}
}- 지시어 문서:
location,proxy_pass,root,server - NGINX 또는 NGINX Plus를 다시 로드합니다:
$ sudo nginx -s reload- 브라우저에서 다음 URL에 접속하여 페이지 및 이미지 제공에서 접속했을 때와 비교해 무엇이 달라졌는지 확인합니다: https://NGINX-server/application1/index.html
이제 끝났습니다! 이제 NGINX가 실행 중이며 프록시 서버로 사용할 준비가 된 Ubuntu 인스턴스가 완성되었습니다.
추가 사용 사례를 위해 AWS에 NGINX 및 NGINX Plus를 배포하는 방법은 배포 가이드를 참조하세요.
결론
이 튜토리얼에서는 인터넷을 통해 파일과 이미지를 제공하고 리버스 프록시 역할을 하도록 NGINX 또는 NGINX Plus를 설정하는 방법을 알아보았습니다. NGINX를 더 자세히 알아보고 싶다면, 이 튜토리얼의 주제뿐만 아니라 로드 밸런싱, 위치 기반 라우팅, 보안 등 웹 서비스 및 애플리케이션 전송에 필요한 핵심 내용을 다루는 NGINX Core 교육 과정(강사 진행 또는 온디맨드)을 이용할 수 있습니다. 또한 다음에서 제공되는 문서: nginx.org 및 NGINX Plus 관리자 가이드도 확인해 보세요. 별도로 명시된 경우를 제외하면 해당 문서의 내용은 NGINX Open Source와 NGINX Plus 모두에 적용됩니다.
관련 블로그 게시물
시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric
이 영상에서는 KubeCon의 NGINX 부스를 찾아가, 저희가 공개한 Kubernetes Gateway API 구현을 살펴봅니다.
F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법
앱 보안을 강화하는 두 가지 방법을 소개합니다. NGINX Management Suite를 통해 WAF 운영에 대한 가시성을 높이고, NGINX App Protect WAF를 활용해 코드형 보안을 구현하는 것입니다.
Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션
개발 주체, 개발 철학, 프로덕션 환경 준비도, 보안 및 지원을 기준으로 어떤 NGINX Ingress 컨트롤러가 가장 적합한지 알아보세요.
진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법
NGINX App Protect Denial of Service(DoS)가 계층 7 DoS 공격을 방어하기 위해 완화 방법을 실시간으로 조정하는 방식을 설명합니다. 정상적인 사용자 행동과 서버 상태에 대한 모델을 생성하여 공격을 나타내는 이상 징후를 감지하고 맞춤형 완화 시그니처를 적용할 수 있습니다.
NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리
NGINX Instance Manager 버전 1.0에는 두 가지 새로운 기능이 도입되었습니다. NGINX 인스턴스에 태그와 사용자 역할을 지정하면 전체 그룹에 구성을 한 번에 적용할 수 있습니다. 인증서 검사는 만료 예정인 인증서를 감지하여 서비스 중단을 방지할 수 있도록 인증서를 교체할 수 있게 해줍니다.
Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유
Netflix가 글로벌 콘텐츠 전송 네트워크인 Open Connect의 스트리밍 미디어 기술로 NGINX를 선택한 이유를 NGINX 개발자 Gleb Smirnoff에게서 알아보세요.