자습서: AWS에서 Reverse Proxy 로 NGINX 및 NGINX Plus 설정

이 자습서는 컴퓨터의 설정에 영향을 미치지 않고 사용하기 쉬운 설정으로 AWS(Amazon Web Services)의 Ubuntu 20.04에서 NGINX를 AWS Reverse Proxy 로 설치하고 실행하는 방법을 안내합니다. 엔터프라이즈급 기능을 갖춘 상용 버전인 NGINX Plus와 NGINX를 모두 포함합니다.

15년 이상 전에 도입된 이후로 NGINX는 꾸준히 인기를 얻었으며 현재 3억 5천만 개 이상의 웹사이트를 지원하는 세계에서 가장 인기 있는 웹 서버 및 리버스 프록시입니다. 이 경우 대중을 따라 모든 웹 서비스 요구 사항에 대해 NGINX를 사용하고 추가로 Reverse Proxy, Content Cache, Load Balancer, API Gateway 등의 기능을 활용하는 것이 현명하다고 생각합니다.

자습서에는 다음 작업에 대한 지침이 포함되어 있습니다.

목차

1. 터미널 액세스
1-1. MacOS에서 터미널 액세스
1-2. 윈도우에서 터미널 액세스

2. AWS 설정
3. NGINX 소프트웨어 설치
3-1. NGINX Open Source 설치
3-2. NGINX Plus 설치
4. 웹 페이지 열기

5. 샘플 파일 설정
6. 페이지 및 이미지 제공
7. Proxy Server 설정
8. 결론

1. 터미널 액세스

이 자습서에서는 Amazon Elastic Compute Cloud(EC2) 인스턴스에 연결하기 위한 터미널이 필요합니다. Mac에는 내장 터미널이 있지만 Windows 사용자는 PuTTY 또는 이와 동등한 도구를 다운로드해야 합니다. 자체 로컬 터미널을 사용하여 NGINX 또는 NGINX Plus를 설정하고 웹 콘텐츠를 제공하려면 AWS 설정으로 건너뛰십시오.

1-1. MacOS에서 터미널 액세스

Mac에서는 내장된 터미널 도구를 사용하여 이 자습서의 모든 작업을 수행할 수 있습니다.

  1. 화면 상단 바 우측 끝에 있는 돋보기 아이콘을 클릭합니다.
  2. 팝업 상자에 terminal을 입력하고 Enter 키를 누릅니다. 별도의 터미널 창이 열립니다.

1-2. 윈도우에서 터미널 액세스

윈도우(Window)에는 터미널이 내장되어 있지 않으므로 인터넷에서 터미널을 다운로드해야 합니다. AWS와 함께 전 세계에서 사용되는 ssh 클라이언트인 PuTTY를 권장합니다.

  1. PUTTY 다운로드 페이지에 접속합니다.
  2. 원하는 위치에 파일을 다운로드하여 설치한 다음 엽니다. 그러나 AWS 설정의 단계를 완료할 때까지 실제 터미널에 액세스할 수 없습니다.

2. AWS 설정

이 자습서에서는 Amazon Virtual Private Cloud(VPC)가 있고 대부분의 계정으로 생성된 기본 VPC 구성을 사용할 수 있다고 가정합니다. 이 섹션에서는 EC2 인스턴스를 생성하고 연결하여 AWS 배포를 설정합니다.

Note: EC2 인스턴스를 생성하기 위한 다음 절차 및 스크린샷은 작성 당시에 확인되었지만 AWS에서 변경될 수 있습니다. 필요에 따라 지침을 조정하십시오.

  • AWS 홈페이지에서 (AWS Management) Console에 로그인하거나 필요한 경우 먼저 새 계정을 생성하십시오.
  • Console 제목 표시줄에서 Services 를 클릭한 다음 Compute 섹션에서 EC2 를 클릭합니다.
AWS Reverse Proxy Screenshot showing selection of 'EC2' on AWS 'Services' page
  • EC2 대시보드 페이지에서 Launch Instance 버튼을 클릭합니다.
  • 1단계 페이지에서 Ubuntu Server 20.04 LTS(HVM), SSD Volume Type 행의 Select 버튼을 클릭하고 기본 64비트(x86) 아키텍처 선택을 유지합니다.
AWS Reverse Proxy Screenshot of 'Step 1' page in Amazon EC2 instance-creation wizard
  • 2단계 페이지에서 t2.micro 인스턴스 유형을 선택합니다. 이 유형은 현재 프리 티어 적격으로 표시되어 있고 기본적으로 선택되어 있습니다. Next: Configure Instance Details 버튼을 클릭합니다.
Screenshot of 'Step 2' page in Amazon EC2 instance-creation wizard
  • 3단계 페이지에서 사용하려는 VPC가 네트워크 필드에서 선택되어 있고 Auto-assign Public IP 필드가 기본 서브넷 사용 설정(활성화) 또는 활성화로 설정되어 있는지 확인하십시오. 나머지 설정은 기본값으로 둡니다.
Screenshot of 'Step 3' page in Amazon EC2 instance-creation wizard
  • 페이지 상단의 6. Security Group Configure을 클릭합니다.
  • 6단계 페이지에서 다음 단계를 수행하여 들어오는 HTTP 및 HTTPS 트래픽을 허용합니다(기본적으로 EC2 인스턴스는 SSH 트래픽만 수락함).
  • 테이블 아래의 Add Rule 버튼을 클릭한 다음 유형 열의 드롭다운 메뉴에서 HTTP를 선택합니다. 이 자습서의 목적을 위해 모든 IP 주소에서 액세스를 허용합니다(Source 열의 값은 Anywhere 0.0.0.0/0, ::/0). Production 환경의 경우 보안 그룹을 사용하여 액세스를 제어하도록 지시하는 페이지의 경고를 따르는 것이 좋습니다.
  • HTTPS에 대해 이전 단계를 반복합니다.
  • 페이지 하단의 Review and Launch 버튼을 클릭합니다.
Screenshot of 'Step 6' page in Amazon EC2 instance-creation wizard
  • 7단계 페이지에서 하단의 Launch 버튼을 클릭합니다.
  • 팝업 상자에서 새 키 쌍을 만듭니다.
    • 상단 드롭다운 메뉴에서 Create a new key pair를 선택합니다.
    • 키 페어 유형을 선택합니다. 이 자습서에서는 RSA를 선택합니다.
    • 키 쌍 이름 필드에 NGINX_key와 같은 이름을 입력합니다.
    • Download Key Pair 버튼을 클릭합니다.
    • 아래 애니메이션 스크린샷에 표시된 것처럼 확인란이 Download Key Pair 버튼을 대체합니다. 개인 키에 액세스할 수 있음을 나타내려면 이 옵션을 클릭합니다.
    • Launch Instances 버튼을 클릭합니다.
Screenshot of Amazon EC2 'Select and existing key pair or create a new key pair' pop-up window
  • 파일 관리자 유틸리티에서 다운로드한 .pem 파일(자습서에서는 NGINX_key.pem)을 안전한 위치로 이동합니다. 자습서를 위해 /Desktop/NGINX 디렉토리에 배치합니다.
  • Windows 터미널을 사용하는 경우 AWS 지침에 따라 PuTTYgen 유틸리티를 다운로드하고 .pem 파일을 .ppk 파일로 변환합니다.
  • Launch Status 페이지에서 하단의 View Instances 버튼을 클릭합니다.
  • 열리는 인스턴스 페이지에서 테이블에 새 인스턴스가 나타납니다. 이름을 지정하십시오.
    • Name 열에서 연필 아이콘을 클릭합니다.
    • Edit Name 팝업 상자에 이름을 입력하고 Save 버튼을 클릭합니다.
Screenshot of Amazon EC2 'Instances' page showing editing of instance name

화면 상단의 연결 버튼을 클릭합니다. 아래와 같은 창이 뜹니다. SSH 클라이언트 탭을 열고 지침에 따라 인스턴스에 연결합니다. Windows를 사용하는 경우 명령에서 .pem을 .ppk로 대체합니다.

Screenshot of Amazon EC2 'Connect to instance' pop-up window

3. NGINX 소프트웨어 설치

이제 AWS 환경이 설정되었으므로 30일 동안 무료로 사용해 볼 수 있는 NGINX Open Source 또는 NGINX Plus를 설치할 차례입니다. 두 옵션 모두 이 자습의 맥락에서 작동하지만 NGINX Plus의 고급 기능을 더 자세히 살펴보려면 무료 평가판을 요청하십시오.

3-1. NGINX Open Source 설치

대부분의 Linux 배포판 및 BSD 변형은 NGINX 오픈 소스를 표준 패키지 Repository에서 사용할 수 있게 하지만, 일반적으로 최신 버전은 아닙니다. nginx.org에서 직접 NGINX Open Source를 다운로드하는 것이 좋습니다. Ubuntu 패키지 관리자(apt)에 NGINX Repository를 추가하기 위한 몇 가지 추가 단계가 있습니다.

NGINX 오픈 소스를 설치하려면 다음 단계를 따르세요.

  • 터미널에 액세스합니다.
  • NGINX 서명 키를 다운로드합니다.
$ sudo wget http://nginx.org/keys/nginx_signing.key
  • 키를 추가합니다.
$ sudo apt-key add nginx_signing.key
  • 디렉토리를 /etc/apt로 변경합니다.
$ cd /etc/apt
  • 끝 부분에 다음 텍스트를 추가하는 것으로 sources.list 파일을 편집합니다.
deb http://nginx.org/packages/ubuntu focal nginx
deb-src http://nginx.org/packages/ubuntu focal nginx

Note: 이러한 각 줄의 초점 키워드는 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

웹 페이지 열기에서 계속하겠습니다.

3-2. NGINX Plus 설치

  • 아직 NGINX Plus가 없는 경우 30일 무료 평가판에 등록하십시오.
  • 평가판 구독을 사용할 수 있다는 이메일 알림을 받으면 제공된 지침에 따라 보안 인증서, 개인 키 및 JWT를 다운로드한 다음 NGINX Plus를 설치하십시오.
  • 설치가 완료되고 NGINX Plus가 실행되면 웹 페이지 열기에서 계속 진행하겠습니다.

4. 웹 페이지 열기

이제 NGINX 소프트웨어를 시작했으므로 사이트 콘텐츠를 제공하도록 구성하기 전에 NGINX 및 NGINX Plus가 기본적으로 제공하는 웹 페이지를 살펴보세요. 다음 단계를 수행하십시오.

  • 아직 없는 경우 EC2 대시보드의 인스턴스 탭으로 이동합니다. (한 가지 방법은 상단 콘솔 탐색 모음에서 Services , Compute 섹션에서 EC2 , 왼쪽 탐색 열에서 Instances를 클릭하는 것입니다.)
  • Public IPv4 address열에 인스턴스의 공용 IP 주소가 표시될 때까지 테이블에서 오른쪽으로 스크롤합니다(스크린샷에서 3.22.51.xxx). 주소를 선택하고 붙여넣기 버퍼에 복사합니다.
Screenshot of Amazon EC2 'Instances' page showing 'Public IPv4 address' field for an instance
  • 새 브라우저 탭을 열고 주소를 주소 표시줄에 붙여넣습니다. NGINX가 설치되어 실행되고 있지만 아직 구성되지 않았음을 나타내는 기본 nginx! 시작 페이지가 나타납니다.
The welcome page confirms that your NGINX reverse proxy and web server is up and running

5. 샘플 파일 설정

작동 중인 NGINX 또는 NGINX Plus 버전이 설치되어 있으면 이를 유용하게 사용할 때입니다! 일부 파일과 디렉토리를 설정하여 시작하십시오.

  • 홈 디렉토리가 없는 경우 디렉토리를 홈 디렉토리로 변경합니다. 다음 지침에서는 /home/ubuntu입니다.
  • public_html이라는 디렉토리를 만들고 그 디렉토리로 변경합니다.
  • public_html 디렉토리에서 index.html이라는 파일과 application1이라는 디렉토리를 만듭니다.
  • application1 디렉토리에서 일부 텍스트가 포함된 app1.html이라는 파일을 만듭니다.
  • 홈 디렉토리로 다시 변경합니다.
  • data라는 디렉토리를 만듭니다.
  • data 디렉토리에 images라는 디렉토리를 만듭니다.

6. 페이지 및 이미지 제공

NGINX 또는 NGINX Plus의 첫 번째 사용 사례는 웹 페이지를 통해 사용자에게 페이지와 이미지를 제공하는 것입니다.

  • 디렉토리를 /etc/nginx/conf.d로 변경합니다.
  • NGINX 또는 NGINX Plus가 기본 구성 파일로 사용되지 않도록 default.conf의 이름을 default.conf.bak로 변경합니다.
  • 다음 구성을 사용하여 server1.conf라는 파일을 만듭니다.
server {
    root /home/ubuntu/public_html;

    location /application1 {  }

    location /images {		
        root /home/ubuntu/data;	
    }
}

지침 문서: location, root, server

  • 디렉토리를 ~/data/images로 변경합니다.
  • 제공하려는 이미지를 찾아서 디렉토리(~/data/images)에 복사합니다. 예를 들어, 다음 명령은 NGINX Logo를 복사합니다.
$ curl -o NGINX-logo.png https://www.nginx.com/wp-content/uploads/2021/11/NGINX-logo-2020.png
  • NGINX 또는 NGINX Plus Reload 합니다.
$ sudo nginx -s reload
  • 웹 브라우저에서 다음 URL의 이미지를 요청합니다. 여기서 NGINX-server는 EC2 인스턴스의 Public IP 주소입니다.
https://NGINX-server/images/NGINX-logo.png

또한 애플리케이션에 액세스하여 얻은 결과를 관찰하십시오.

https://NGINX-server/application1/app1.html

7. Proxy Server 설정

이제 작동하는 웹 서버가 있으므로 트래픽을 라우팅하도록 구성하는 방법을 알아볼 차례입니다. 이 기능을 사용하면 트래픽을 다른 서버로 전달할 수 있으며 Load Balancing 설정을 향한 주요 단계입니다. 다음 단계를 수행하십시오.

  • ~/data 디렉토리에 server2라는 디렉토리를 생성합니다.
  • server2 디렉토리에 sampleApp이라는 디렉토리를 만듭니다.
  • sampleApp 디렉토리에서 일부 텍스트가 포함된 index.html 파일을 생성합니다.
  • 디렉토리를 /etc/nginx/conf.d로 변경합니다.
  • 다음 구성을 사용하여 server2.conf라는 파일을 만듭니다.
server {
    listen 8080;
    root /home/ubuntu/data/server2;
}

지침 문서: location, root, server

  • 다음과 같이 첫 번째 위치 블록에 proxy_pass 지시문을 추가하여 server1.conf를 수정합니다.
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 Reload 합니다.
$ sudo nginx -s reload
  • 브라우저에서 다음 URL에 액세스하고 페이지 및 이미지 제공에서 액세스했을 때와 비교하여 변경된 사항을 관찰하십시오.
https://NGINX-server/application1/index.html

이제 Proxy Server 로 실행할 준비가 된 NGINX를 실행하고 작동 중인 Ubuntu 인스턴스가 있습니다.

8. 결론

이 자습서에서는 NGINX 또는 NGINX Plus를 설정하여 인터넷을 통해 파일 및 이미지를 제공하고 AWS Reverse Proxy 로 작동하는 방법을 배웠습니다. NGINX에 대해 더 자세한 솔루션NGINX Plus 성능을 직접 테스트 및 사용해 보려면 지금 30일 무료 평가판을 신청하거나 사용 사례에 대해 최신 소식을 빠르게 전달받고 싶으시면 아래 뉴스레터를 구독하세요.