MSA 트레이닝 센터

NGINX Unit Config API 및 구성요소 살펴보기

NGINX Unit은 현대 웹 아키텍처의 빌딩 블록으로, 간단한 애완동물 홈페이지부터 복잡한 엔터프라이즈 애플리케이션에 이르기까지 다양한 환경에서 활용 가능한 범용 애플리케이션 서버입니다. NGINX Unit Config API 는 이러한 유연성과 강력한 성능을 뒷받침하는 핵심 요소로, 개발자와 운영자가 효율적으로 애플리케이션을 관리하고 배포할 수 있도록 돕습니다.

NGINX Unit Config API 및 구성요소 살펴보기

이 가이드에서는 NGINX Unit Config와 관련된 주요 개념, Config API의 중요성, 설정 방법 등을 다루며, 처음 시작하는 사용자부터 고급 사용자를 위한 팁까지 제공합니다.

NGINX Unit Config API 주요 구성요소

(1) Controller

  • 역할: JSON 기반 Config API를 통해 애플리케이션, 라우팅, 설정 등을 제어합니다.
  • 특징: RESTful 인터페이스를 통해 동적 구성이 가능하며, CLI, HTTP, 또는 스크립트를 통해 접근할 수 있습니다.

(2) Config API

  • 중요성: NGINX Unit의 모든 구성을 단순화하고 자동화합니다.
  • JSON 형식으로 구성 데이터를 교환하며, RESTful API를 통해 HTTP 요청으로 관리 가능합니다.
  • 장점:
    • 실시간 설정 변경: 서버 재시작 없이 애플리케이션 추가/수정 가능
    • 동적 확장: 클라우드 환경 및 컨테이너 기반 워크로드에 적합

(3) Language Module

  • 다양한 프로그래밍 언어(PHP, Python, Go 등)를 지원하여 멀티 언어 애플리케이션 환경을 구성할 수 있습니다.

Config API의 중요성

NGINX Unit의 Config API는 애플리케이션 관리와 설정 변경의 핵심입니다. 이 API는 운영 효율성을 높이고 복잡한 환경에서도 손쉽게 애플리케이션을 관리할 수 있도록 설계되었습니다.

Confit API가 중요한 이유

  1. 유연성: JSON 형식을 사용하여 모든 설정을 한 곳에서 관리
  2. 무중단 설정 변경: 서버 재시작 없이 실시간으로 애플리케이션, 라우팅, TLS 인증서를 변경 가능
  3. 자동화: CI/CD 파이프라인에 쉽게 통합 가능
  4. 호환성: 기존 레거시 애플리케이션과 최신 마이크로서비스 환경 모두에서 활용 가능

NGINX Unit 설치 및 첫 설정

(1) 설치 방법

  • 패키지 매니저 사용:
				
					# Debian/Ubuntu
sudo apt update
sudo apt install unit

# CentOS/RHEL
sudo yum install unit

				
			
  • Docker 컨테이너 사용
				
					docker run -d --name unit -p 8080:8080 nginx/unit

				
			

(2) 기본구성

NGINX Unit의 Config API는 localhost:8080에서 기본적으로 실행됩니다. 이를 통해 설정을 추가하거나 변경할 수 있습니다.

				
					curl -X PUT --data '{
    "listeners": {
        "*:80": {
            "pass": "routes"
        }
    },
    "routes": [
        {
            "match": {
                "uri": "/"
            },
            "action": {
                "share": "/data/www"
            }
        }
    ]
}' http://localhost:8080/config

				
			

Hello World 애플리케이션 구성

(1) Python 애플리케이션 추가

				
					curl -X PUT --data '{
    "listeners": {
        "*:8080": {
            "pass": "applications/hello"
        }
    },
    "applications": {
        "hello": {
            "type": "python",
            "processes": 2,
            "path": "/path/to/app",
            "module": "wsgi"
        }
    }
}' http://localhost:8080/config

				
			

(2) 애플리케이션 경로 예제

				
					# /path/to/app/wsgi.py
def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    return [b"Hello, World!"]

				
			

NGINX Unit 웹 서버 구성

NGINX Unit은 애플리케이션 서버 역할 외에도 웹 서버로 사용할 수 있습니다.

정적 콘텐츠 제공

				
					curl -X PUT --data '{
    "listeners": {
        "*:8080": {
            "pass": "routes"
        }
    },
    "routes": [
        {
            "match": {
                "uri": "/static/*"
            },
            "action": {
                "share": "/var/www/static"
            }
        }
    ]
}' http://localhost:8080/config

				
			

NGINX Unit Config API 고급 사용자를 위한 팁

TLS 설정

TLS 인증서를 적용하여 보안을 강화할 수 있습니다.

				
					curl -X PUT --data '{
    "listeners": {
        "127.0.0.1:443": {
            "pass": "routes",
            "tls": {
                "certificate": "path/to/cert.pem",
                "key": "path/to/key.pem"
            }
        }
    }
}' http://localhost:8080/config

				
			

Config 백업 및 복원

Config API를 사용해 설정을 쉽게 백업하고 복원할 수 있습니다.

				
					# 백업
curl http://localhost:8080/config > backup.json

# 복원
curl -X PUT --data @backup.json http://localhost:8080/config
				
			

결론

NGINX Unit Language 모듈 소개

NGINX Unit과 Config API는 현대 애플리케이션의 복잡성을 크게 줄이고, 유연하고 확장 가능한 구성을 제공합니다. NGINX Unit Config는 동적 구성을 지원하여 마이크로서비스 환경에서의 민첩성을 높이고, 레거시 애플리케이션의 현대화를 지원합니다.

NGINX Unit을 도입하면, 더 이상 복잡한 구성 파일과 재시작 요구 사항에 얽매이지 않고, 효율적이고 안정적인 애플리케이션 관리를 경험할 수 있습니다.

NGINX Unit 도입을 시작하려면 NGINX STORE 지원팀에 문의해 보세요.