NGINX Proxy Manager를 사용한 간단한 가상 호스트 관리

프록시가상 호스트(VHosts)를 NGINX 구성 파일을 통해 관리하는 것은 가상 호스트 및 웹 서비스 수가 증가함에 따라 까다로워질 수 있습니다. 이 프로세스를 어떻게 간소화할 수 있을까요? NGINX Proxy Manager (NPM).

계속 읽어보고 NGINX Proxy Manager 웹 콘솔을 사용하여 가상 호스트를 만들고 관리하며 보안을 강화하는 방법을 알아보세요.

전제 조건

이 튜토리얼은 실습을 통한 데모로 진행됩니다. 따라오려면 다음 사항이 있는지 확인하십시오:

NGINX Proxy Manager 설정

NGINX Proxy Manager는 운영 체제에 설치하는 패키지가 아닙니다. 대신 NPM은 Docker에서 배포하는 앱입니다. 이것이 Docker와 Docker Compose가 주요 요구 사항인 이유입니다.

NGINX Proxy Manager 설정을 시작하려면 아래 단계를 따르세요.

1. Linux 서버에 SSH 또는 데스크톱 환경을 통해 로그인하세요.

2. 선호하는 텍스트 편집기를 사용하여 docker-compose.yml이라는 YAML 파일을 생성하고 엽니다. 여기서는 vi를 사용합니다.

vi docker-compose.yml

3. 다음 코드를 편집기에 복사하여 붙여넣으세요. 이 코드에는 최신 nginx-proxy-manager 이미지를 다운로드하고 설정하는 지시문이 포함되어 있습니다. 파일을 저장하고 닫아 명령줄로 돌아갑니다.

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped #Proxy 매니저가 충돌 시 생존하도록 보장
    ports:
      #호스트 머신에서 해당 컨테이너 포트에 액세스 허용
      - '80:80'
      - '81:81' #관리 패널 포트
      - '443:443'
    volumes:
      #다음 컨테이너 디렉토리를 호스트의 해당 디렉토리에 매핑
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

4. docker-compose를 실행하여 백그라운드에서 지정된 지시에 따라 컨테이너를 시작하세요. (-d)

docker-compose up -d
Running Docker Compose to set up NGINX Proxy Manager container

5. 컨테이너가 실행 중인지 확인하려면 다음 명령을 실행하세요.

docker ps

모든 것이 정상이라면 아래 스크린샷과 일치하는 프록시 매니저 컨테이너에 해당하는 실행 중인 프로세스가 표시됩니다.

Listing running Docker containers

관리 패널에 액세스하기

NGINX Proxy Manager가 현재 실행 중이어야 합니다. 이제 NPM 관리자 패널에 액세스하여 초기 관리자 사용자 설정을 수행할 수 있습니다.

1. 브라우저 창을 열고 http://<host_ip>:admin-ui-port>로 이동합니다. 편의상이 튜토리얼은 IP 주소 대신 암시적인 localhost를 사용하며, 즉, http://localhost:81으로 관리자 패널을 시작합니다.

2. 초기 기본 자격 증명(이메일 주소 [email protected] 및 암호 changeme)으로 로그인합니다.

Logging in for the first time

3. 원하는대로 기본 사용자 계정을 수정합니다. 이 튜토리얼에서는 전체 이름 및 별명을 유지하고 이메일만 [email protected]으로 변경합니다. 사용자 세부 정보를 저장하려면 저장을 클릭합니다.

Changing admin user default credentials

4. 아래에 표시된대로 사용자에 대한 새 암호를 입력합니다. 패스워드는 여덟 자 이상이어야 하며, 저장을 클릭합니다.

Changing the default password

이제 사용자 계정에 대한 수정 사항이 표시됩니다.

Viewing the user list in NGINX Proxy Manager

웹 서버 배포

초기 설정을 완료했으므로 다음 단계는 가상 호스트에 웹 서버를 시작하는 것입니다. Docker Compose를 사용하여 Apache 웹 서비스 컨테이너를 빠르게 시작하려면이 섹션의 단계를 따르십시오.

이전에 텍스트 편집기에서 만든 docker-compose.yml 파일을 엽니다. docker-compose.yml 파일에 다음 코드 조각을 추가합니다.

동일한 파일을 사용하는 장점은 기존 컨테이너 네트워크를 수정하여 별도의 네트워크가 아닌 app2라는 이름으로 등록된 httpd 기반 컨테이너를 추가할 수 있다는 것입니다.

app2:
    #내부 참조용 사용자 정의 컨테이너 이름. 컨테이너 간 네트워킹에 사용됨
    image: 'httpd:latest'
    restart: unless-stopped

파일 내용은 아래 스크린샷과 같아야 합니다. 파일을 저장하고 편집기를 종료하십시오.

Adding a web server deployment directive

docker-compose를 실행하여 컨테이너를 백그라운드(-d)에서 시작하십시오.

docker-compose up -d

두 번째 컨테이너가 생성되었음을 확인할 수 있는 아래 스크린샷과 유사한 피드백을 받아야 합니다.

Creating and starting the Web server with Docker Compose

새 가상 호스트 만들기

이제 실행 중인 웹 서비스가 있습니다. 이 섹션은 NGINX Proxy Manager의 게시된 포트를 통한 웹 서버 접근을 가능하게 하는 것을 목표로 합니다.

1. NGINX Proxy Manager의 관리자 패널에 로그인하십시오.

2. 호스트 —> 프록시 호스트를 클릭하십시오.

Creating a VHOST: Opening the Proxy Host card

3. 가상 호스트를 만들기 위해 프록시 호스트 추가를 클릭하십시오.

Creating a VHOST: Adding a Proxy Host

4. 가상 호스트를 설정하기 위해 다음 세부 정보로 새 프록시 호스트 양식을 작성하십시오.

  • 도메인 이름: 웹 서버에 액세스할 수 있는 도메인 이름. 이 예시에서는 testweb.com 도메인을 사용합니다.
  • 스킴: 웹 서버에 액세스할 때 사용할 프로토콜. 현재는 기본값인 http로 남겨두십시오.
  • 전달 호스트 이름 / IP: 웹 서버의 호스트 이름 또는 IP 주소입니다. 이 튜토리얼에서는 Docker Compose를 사용하여 컨테이너를 설정했으므로 app2를 사용하는 것으로 충분합니다. docker-compose.yml에 제공한 이름을 입력하십시오.
  • 전달 포트: 웹 서버가 요청을 수신하는 포트입니다. 이 경우, Apache httpd 컨테이너의 기본 노출 포트인 80을 사용합니다.
  • 일반적인 악용 차단: NPM을 사용하여 설정한 프록시는 일반적인 악용을 차단할 수 있습니다. 이 옵션을 켜십시오.
  • 액세스 목록: 프록시 뒤의 웹 서버에 대한 액세스를 제어하기 위한 사전 지정된 목록입니다. 이 튜토리얼에서는 웹 서버에 대한 액세스를 보장하기 위해 공개적으로 액세스 가능한 선택을 남겨두십시오.

화면에 표시된 양식이 아래 스크린샷과 일치해야 합니다. 양식을 완료한 후 저장을 클릭하십시오.

Adding the Proxy Host details

이제 목록에 하나의 프록시 호스트가 있습니다.

List of proxy hosts

5. 마지막으로, 새 브라우저 탭이나 창에서 가상 호스트 URL로 이동하십시오. 이 튜토리얼에서 URL은 http://testweb.com입니다. 가상 호스트가 올바르게 작동하는 경우, 기본 홈페이지가 표시됩니다.

Accessing the Webserver via the Proxy

SSL 인증서 프로비저닝

웹 서버를 배포하고 실행되었음을 확인했습니다. 그러나 현재 웹 사이트에는 아직 SSL 인증서가 없습니다. 내부 비공개 웹 사이트를 실행하는 것은 SSL 인증서가 없어도 괜찮을 수 있지만, 공개 웹 사이트를 호스팅할 때는 그렇지 않아야 합니다.

웹사이트 연결이 암호화되도록 보장하기 위해 다음에는 가상 호스트에 SSL 인증서를 설치할 것입니다. 걱정하지 마세요; NGINX Proxy Manager에서 수행할 것입니다. 그러나 이미 PEM 형식의 SSL 인증서와 인증서 키가 필요합니다.

1. NGINX Proxy Manager 관리 패널에서 SSL 인증서 탭을 클릭하십시오.

Opening the SSL Certificates tab

2. 오른쪽 상단에 있는 “SSL 인증서 추가”를 클릭한 다음 “사용자 정의”를 클릭하십시오.

Adding a custom SSL certificate

사용자 정의 인증서 대신에 Let’s Encrypt를 선택하여 실시간으로 Let’s Encrypt 인증서를 요청할 수도 있습니다. 그러나 이렇게 하려면 웹사이트와 DNS 레코드가 공개되어 있어야 합니다. 그렇지 않으면 인증서 획득이 실패합니다.

3. 다음과 같이 사용자 정의 인증서 추가 양식을 작성하십시오.

  • 이름: 관리 패널에서 인증서의 사람 친화적인 이름. 이 튜토리얼에서는 Testweb Cert라는 이름을 사용합니다.
Provisioning SSL Certificates: Naming the certificate
  • 인증서 키: 이 키는 이 튜토리얼의 요구 사항으로 생성된 인증서 파일과 함께 제공됩니다.

찾아보기를 클릭하고 키 파일로 이동하십시오.

Provisioning SSL Certificates: Selecting the key file

키 파일을 두 번 클릭하십시오. 이 튜토리얼에서 인증서 키의 이름은 mytesthttpd.key입니다.

Provisioning SSL Certificates: Selecting the key file
  • 인증서: .crt 또는 .pem 형식의 인증서 파일 자체입니다.

탐색하여 파일 탐색기에서 인증서를 찾으십시오.

Provisioning SSL Certificates: Selecting the certificate file

인증서 파일을 두 번 클릭하여 엽니다. 이 튜토리얼에서 키 파일의 이름은 mytesthttpd.pem입니다.

Provisioning SSL Certificates: Selecting the certificate file

4. 세 필드를 모두 작성한 후에는 양식이 아래 스크린샷과 같아야합니다. 사용자 정의 인증서를 제출하려면 저장을 클릭하십시오.

이 튜토리얼에서는 중간 인증서를 사용하지 않습니다. 일단 해당 필드를 무시하십시오.

Saving the SSL certificate

5. 이제 호스트를 클릭하십시오 —> 프록시 호스트.

Provisioning SSL Certificates: Applying the certificate to a Proxy Host

6. 케밥 메뉴 아이콘을 클릭하고 편집을 클릭하십시오. 이 시점에서 SSL 열이 HTTP만이라는 것에 유의하십시오.

Editing a proxy Host

7. 아래와 같이 편집 프록시 호스트 창에서 SSL 탭을 선택하십시오. SSL 인증서 드롭다운 메뉴에서 제공한 인증서를 선택하십시오. 이 튜토리얼에서는 스크린샷에 나와 있는 것처럼 Testweb Cert입니다.

Selecting a certificate for a Proxy Host

8. 이전에 추가한 인증서를 SSL 인증서 드롭다운 메뉴에서 선택하십시오. 아래에서 볼 수 있듯이 선택할 인증서 이름은 Testweb Cert입니다.

Selecting a certificate for a Proxy Host

9. 아래 스크린샷에서 볼 수 있는 대로 사용 가능한 모든 향상된 SSL 옵션을 활성화하고 저장을 클릭하십시오.

강제 SSL 옵션을 활성화하면 클라이언트가 처음에 HTTP URL에 액세스하려고 시도했을 때도 모든 연결을 HTTPS로 강제하거나 업그레이드합니다.

Enabling enhanced SSL features

A word of warning with HSTS. As browsers will include the site on an internal inclusion list, your site will no longer work under non-SSL conditions. Therefore, make sure that you have everything set up the correct way first.

SSL 열 값이 HTTP만에서 사용자 정의로 변경된 것을 알 수 있습니다.

Confirming changes in the SSL setting for a Proxy Host

10. 마지막으로 브라우저 탭을 열고 다시 가상 호스트 도메인으로 이동하십시오. 이 튜토리얼에서는 http://testweb.com입니다. 연결은 자동으로 HTTPS로 업그레이드되어야합니다.

Testing HTTPS access with a browser

축하합니다! NGINX 프록시 관리자를 사용하여 배포 또는 보안된 가상 호스트를 설정했습니다.

NGINX 프록시 관리자 사용자 추가

만약 여러분이 팀과 함께 일하거나 누군가에게 NPM의 가상 호스트를 관리할 것을 기대한다면, 사용자 액세스를 제공해야 합니다. 이 섹션에서는 NPM 관리를 확장하여, 특히 팀 환경에서 사용자를 생성하고 역할 및 권한을 할당함으로써 작업할 것입니다.

1. 관리자 패널 홈페이지에서 사용자를 클릭하십시오.

Extending NPM with Users: Opening the Users tab

2. 사용자 카드의 오른쪽 상단에 있는 사용자 추가를 클릭하십시오.

Adding a user

3. 해당 필드에 사용자의 전체 이름(Test User), 닉네임(testuser), 이메일([email protected])을 입력하고 저장을 클릭하십시오.

생성 중인 이 사용자는 완전한 관리자가 아니므로 관리자 역할을 활성화하지 마십시오. 대신 사용자 지정 권한을 할당할 것입니다. 새 사용자를 추가하려면 저장을 클릭하십시오.

Adding user particulars

4. 사용자에게 부여하려는 권한을 설정하십시오. 이 튜토리얼에서 새 사용자는 다음과 같은 권한 설정을 가질 것입니다.

  • 사용자가 생성한 항목만 볼 수 있습니다.
  • 프록시 호스트를 생성, 편집 및 삭제할 수 있습니다.
  • 리디렉션 호스트를 생성, 편집 및 삭제할 수 있습니다.
  • 404 호스트를 볼 수 없습니다.
  • 스트림을 볼 수 없습니다.
  • 액세스 목록을 볼 수 있습니다.
  • SSL 인증서를 생성, 편집 및 삭제할 수 있습니다.

권한 집합은 아래 스크린샷과 유사해야 합니다. 새 사용자를 추가하려면 저장을 클릭하십시오.

Saving the user’s permissions

5. 이제 새 사용자의 kebab 메뉴를 클릭하고 ‘사용자로 로그인’을 클릭하십시오. 이 단계에서는 현재 사용자 컨텍스트를 테스트 사용자로 전환합니다.

Signing in as the new user

6. 새 사용자의 관점에서 관리자 패널을 탐색하십시오. 이 사용자의 권한에 따라 탭과 리소스를 더 적게 볼 수 있습니다.

Confirming access permissions

결론

이 NGINX Proxy Manager 튜토리얼을 마친 것을 축하드립니다. 가상 호스트를 관리하고 GUI에서 사용자를 만들어 협업을 활성화하는 방법을 배웠습니다! NGINX 가상 호스트를 수동 구성 파일을 편집하여 관리하는 것으로 돌아갈 생각이 있으십니까?

여기에는 학습을 더 테스트할 아이디어가 있습니다. 수동 구성 대신에 배운 내용을 적용하여 NGNIX Proxy Manager를 사용하여 가상 호스트를 배포하고 구성해 보는 것은 어떨까요?NGINX 하위 도메인이나 다중 도메인 제공하는 방법.

Source:
https://adamtheautomator.com/nginx-proxy-manager/