와우자 REST API 외부 접속과 cURL 사용법

와우자 스트리밍 엔진의 REST API 외부 접속을 활성화하는 방법을 설명한다. Server.xmlIPWhiteList에 관리 IP를 추가하고 서비스를 재시작한 뒤, 윈도우 cURL을 이용해 차단 응답과 정상 응답 및 로그 목록 응답을 비교해 설정 결과를 검증한다. 와우자를 외부에서 제어해 자동 제어 할 수 있는 환경을 구성한다.

와우자 스트리밍 엔진에서 REST API의 역할

REST API는 Wowza Streaming Engine(와우자 스트리밍 엔진, 이하 와우자)을 제어하는 방법 중 하나이다. 와우자 매니저를 통해 제공되는 기본 웹 UI도 실제적인 동작은 REST API를 통해 이루어지며, 가장 기본적인 인터페이스인 동시에 웹 UI를 제외하고 가장 쉽게 접근할 수 있는 방법이다.

운영체제와 Java 위에서 동작하는 와우자 스트리밍 엔진을 웹 UI, REST API, CommandInterface와 JMX로 제어하는 구조도
제어 구조

REST API는 HTTP를 이용해 메시지를 전송하는데, HTTP 메시지 전송은 이미 주위에서 널리 사용되고 있는 기술로, 다른 제어 방법들에 비해 접근 장벽이 높지 않다. 별도의 전용 프로그램을 사용하는 것뿐 아니라, 콘솔에서 특정한 동작을 하도록 만들어 둔 배치 파일을 실행하는 형태로도 특정 메시지를 전송해 원하는 동작을 하도록 제어할 수 있다.

이러한 특징은 와우자를 방송 송출 시스템, 스케줄러, 모니터링 시스템 또는 별도의 관리 어플리케이션과 연동할 때 특히 유용하다. 단순한 수동 제어뿐 아니라 특정 조건이 충족되었을 때 자동으로 요청을 전송하거나, 여러 대의 와우자 서버에 동일한 작업을 순차적으로 적용하는 형태로도 활용할 수 있다.

본 글에서는 와우자의 REST API를 사용자가 외부에서 접근할 수 있도록 설정하고, 윈도우 환경에서 cURL을 이용해 와우자를 제어하는 방법을 설명한다.

cURL이란?

이야기를 시작하기에 앞서, 먼저 cURL에 대해 간단히 소개하고자 한다. cURL은 여러 네트워크 프로토콜을 이용해 서버에 데이터를 전송하고, 그 응답을 확인할 수 있는 명령줄 도구로, 일종의 API 테스터 역할을 담당하는 명령어이다.

Postman과 같은 상용 프로그램들도 존재하지만, 간단한 요청을 빠르게 확인하거나 반복 작업을 스크립트와 배치 파일로 자동화하려는 경우에는 cURL이 특히 유용하다. 명령어 한 줄만으로 요청 주소, 인증 정보, HTTP 메서드, 헤더와 전송 데이터를 지정할 수 있어 별도의 프로그램을 설치하고 프로젝트를 구성하는 과정 없이도 곧바로 API 동작을 확인할 수 있다.

무엇보다 리눅스 환경에는 보통 기본 패키지로 설치되어 있으며, 윈도우 환경에서는 윈도우 10 이후 기본 설치되어 있다. 즉, 공짜다.

와우자 REST API는 HTTP를 이용해 데이터를 주고받는다. cURL은 HTTP와 HTTPS 프로토콜을 모두 사용할 수 있으며, 원하는 데이터를 전송하고, 그 응답을 직접 확인할 수 있게 해 준다. 이 글은 독자 제위가 윈도우 환경에서 cURL을 실행하는 것을 가정한다.

윈도우 환경에서 cURL을 실행하는 방법

  1. Windows+R 키를 눌러 실행 대화창을 연다.
  2. cmd를 입력해 명령 프롬프트를 실행한다.
  3. 명령 프롬프트에서 curl --version을 입력하고 엔터를 친다.
Microsoft Windows [Version 10.0.26200.8875]
(c) Microsoft Corporation. All rights reserved.

C:\>curl --version
curl 8.21.0 (Windows) libcurl/8.21.0 Schannel zlib/1.3.2 WinIDN WinLDAP
Release-Date: 2026-06-24
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt mqtts pop3 pop3s smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS HSTS HTTPS-proxy IDN IPv6 Kerberos Largefile libz SPNEGO SSL SSPI threadsafe Unicode UnixSockets

C:\>

위의 예시처럼 cURL의 버전, 지원 프로토콜과 기능 정보가 출력되면 현재 윈도우 환경에서 cURL을 사용할 수 있다는 의미다. 기본적인 cURL 의 사용법은 다음과 같다.

curl -X "GET" "http://아이디:암호@서버주소:포트/요청경로"

주의할 점은 명령줄에 직접 입력한 아이디와 암호가 명령 기록에 남거나 실행 화면과 로그를 통해 노출될 수 있다는 것이다. 실제 운영 중인 서버라면 인증 정보의 관리에 주의해야 하고, 최소한 배치 파일을 이용 후 삭제하는 등의 방법으로 유출되지 않도록 하거나 추가적인 보안 수단을 사용해야 한다. 본 글에서는 테스트와 구현을 목적으로 하는 만큼 이에 대한 고려는 하지 않는다.

와우자 스트리밍 엔진의 REST API 외부 접속 활성화 방법

REST API는 와우자의 가장 기본적인 제어 방법이다. 앞서 와우자 매니저 역시 REST API를 이용해 와우자를 제어한다고 말한 바 있다. 때문에 REST API는 기본적으로 활성화된 상태이지만, 초기 설정에서는 로컬 호스트를 통한 내부 접속만 허용되어 있기 때문에 외부에서 와우자의 REST API에 접근할 수 있도록 몇 가지 추가 설정을 적용해 주어야 한다.

본 설정 예에서, 와우자 REST API 접속을 위한 주소는 blogdemo.eqmaker.kr:8087, 아이디는 decteng, 암호는 dectengpw를 사용한다.

Step 1 : REST API 동작 확인

와우자의 REST API가 정상 동작 중인지 확인해 본다. 웹 UI가 동작하고 있다면 당연히 REST API 역시 동작 중인 상태겠으나, cURL 사용법도 익히고 통신 상태 점검도 할 겸 확인해 보도록 한다. 위에서 설명한 cURL 기본 사용법을 참고하여, 와우자 서버에 접근해 보도록 하겠다.

C:\>curl -X "GET" "http://decteng:dectengpw@blogdemo.eqmaker.kr:8087"
<error><success>false</success><code>403</code><message>Your IP address (w.x.y.z) has been blocked</message></error>
// 해석 : 니 IP (w.x.y.z)는 접근이 안 된다.

위의 모습처럼 응답이 온다면 와우자의 REST API에 정상적으로 접근했다는 의미이다. (현재는 접근 권한을 주지 않은 상태로, 오류 응답이 오는 것이 정상이다.)

만약 응답이 없거나, 연결 시간 초과 등의 오류가 발생하면 서버의 주소와 포트를 확인해 주어야 한다. 만약, The request requires user authentication라는 메시지를 받았다면 접근에는 성공했지만 계정 또는 암호를 잘못 입력했다는 의미이다.

기본적인 cURL 사용법도 익혔고, 와우자 REST API 접근 가능 여부도 확인했으니, 이제 와우자의 REST API 설정을 변경해 외부에서도 접근할 수 있도록 설정할 차례이다.

Step 2 : Server.xml 수정

와우자 REST API 관련 설정은 와우자의 기본 설치 경로 아래에 있는 conf 디렉토리의 Server.xml 파일에서 관리한다. 파일을 열면 앞부분에서 다음과 같은 REST API 설정 블록을 확인할 수 있다.

...(전략)...
<RESTInterface>
 <Enable>true</Enable>
 <IPAddress>*</IPAddress>
 <Port>8087</Port>
 <AuthenticationMethod>basic</AuthenticationMethod>
 <PasswordEncodingScheme>bcrypt</PasswordEncodingScheme>
 <DiagnosticURLEnable>true</DiagnosticURLEnable>
  <SSLConfig>
   <Enable>false</Enable>
   <KeyStorePath></KeyStorePath>
   <KeyStorePassword></KeyStorePassword>
   <KeyStoreType>JKS</KeyStoreType>
   <SSLProtocol>TLS</SSLProtocol>
   <Algorithm>SunX509</Algorithm>
   <CipherSuites></CipherSuites>
   <Protocols></Protocols>
  </SSLConfig>
  <IPWhiteList>127.0.0.1</IPWhiteList>
  <IPBlackList></IPBlackList>
  <EnableXMLFile>false</EnableXMLFile>
  <DocumentationServerEnable>false</DocumentationServerEnable>
  <DocumentationServerPort>8089</DocumentationServerPort>
  <DocumentationServerAuthenticationMethod>none</DocumentationServerAuthenticationMethod>
  <Properties>
  </Properties>
</RESTInterface>
...(생략)...

이 설정 블록에서 붉은색으로 표시된 <IPWhiteList> 태그 부분이 와우자 REST API에 접근할 수 있는 IP 주소를 정의하는 부분이다. 아래의 예시를 참고하여 접속을 허용할 IP를 추가해 준다.

<IPWhiteList>127.0.0.1, 123.123.123.123, 172.*.*.*</IPWhiteList>

IP 화이트리스트 설정 시 참고할 사항이 있다.

  • 주소는 단일 IP 주소 또는 와일드카드 * 를 사용하는 IP 대역으로 설정할 수 있다.
  • 여러 주소 또는 대역을 지정할 경우 ,로 구분해 준다.
  • localhost를 뜻하는 127.0.0.1는 삭제하면 안 된다. 이 경우 웹 UI 를 사용하지 못하게 된다.

Server.xml 파일의 수정을 완료하고 저장한 후, 와우자 서비스를 재시작해 준다.

Step 3 : 진실의 시간 – 연동 확인

와우자 서비스를 재시작한 뒤 cURL을 이용해 Step 1에서 전송했던 요청을 다시 한번 보내 본다.

C:\>curl -X "GET" "http://decteng:dectengpw@blogdemo.eqmaker.kr:8087"
Wowza Streaming Engine 4 Trial Edition (Expires: May 04, 2025) 4.8.25+2 build20231003151257

Step 1의 결과와 다르게, 이번에는 와우자 스트리밍 엔진의 버전 정보가 출력되고 있다. 이는 와우자가 cURL의 요청을 정상적으로 받아들이고 응답했다는 의미다.

이참에 와우자 제어 방법을 소개하며 예시로 들었던 REST API의 로그 파일 목록 조회 요청도 시험해 보자.

C:\>curl -X "GET" "http://decteng:dectengpw@blogdemo.eqmaker.kr:8087/v2/servers/defaultServer/logfiles"
<?xml version='1.0' encoding='UTF-8'?><ServerLogFiles serverName="defaultServer">
 <ServerLogFiles id="wowzastreamingengine_access.log" href="%2Fv2%2Fservers%2F_defaultServer_%2Flogfiles%2Fwowzastreamingengine_access.log">
  <FileSize>420551</FileSize>
  <StartDateMS>1744729200000</StartDateMS>
      ... 중략 ...
 <ServerLogFiles id="wowzastreamingengine_stats.log" href="%2Fv2%2Fservers%2F_defaultServer_%2Flogfiles%2Fwowzastreamingengine_stats.log">
  <FileSize>313</FileSize>
  <StartDateMS>1744383600000</StartDateMS>
 </ServerLogFiles>
</ServerLogFiles>
C:\>

와우자 서버의 최신 로그 파일 목록을 XML 형태로 반환해 주는 것을 확인할 수 있다. 이로써 Server.xml의 IP 화이트리스트 수정과 서비스 재시작, 외부 접속 확인까지 와우자 REST API를 외부에서 사용할 수 있도록 하는 기본 설정이 완료되었다.

다음 단계는?

이것으로 REST API를 이용해 와우자의 상태를 조회하고 필요한 동작을 외부에서 지시할 수 있게 되었다. 더 이상 모든 작업을 웹 UI에 접속해 수작업으로 처리할 필요 없이, HTTP 요청을 통해 서버와 어플리케이션의 상태를 확인하고 반복 작업을 자동으로 실행할 수 있다.

더 나아가 독자 제위의 필요에 따라 와우자와 연동하는 별도의 프로그램을 개발할 수도 있다. 외부 프로그램에서 필요한 정보를 불러오고, 조건에 따라 명령을 전송하도록 구성하면 단순한 원격 제어를 넘어 자동화 운영이 가능해진다.

본 필자의 경우에는 간단한 파이썬 프로그램을 작성해 와우자의 메모리 사용 상태를 자동으로 모니터링하고, 일정 기준을 초과하면 경고를 표시하도록 구성했다. 또한 스케줄에 따라 스트림을 제어하는 송출 시스템을 만들어 실제 운영에 활용하고 있다.

이는 활용 가능한 방법 가운데 일부에 불과하다. 서버 상태 수집, 장애 감지, 어플리케이션 시작과 중지, 로그 조회, 스케줄 기반 제어처럼 어떤 기능을 어떻게 구현할 것인지는 독자 제위의 운영 환경과 상상력에 달려 있다.

와우자 REST API를 통해 조회하거나 제어할 수 있는 기능과 요청 경로는 와우자 REST API 레퍼런스에서 확인할 수 있다.

FAQ

와우자 스트리밍 엔진을 자동으로 제어하는 방법에는 어떤 것이 있는가?
와우자 스트리밍 엔진은 REST API, JMX, Java API와 서버 측 모듈을 이용해 자동으로 제어할 수 있다. 이 가운데 REST API는 HTTP 요청을 이용하므로 외부 프로그램, 스케줄러, 모니터링 시스템과 연동하기 가장 쉬운 방법이다.
REST API는 무엇이며 와우자 스트리밍 엔진에서 어떤 역할을 담당하는가?
REST API는 HTTP 요청과 응답을 이용해 서버의 상태를 조회하고 설정이나 동작을 제어하는 인터페이스다. 와우자에서는 서버, 가상 호스트, 어플리케이션, 스트림과 로그 등의 정보를 조회하고 일부 설정을 변경하는 데 사용한다.
와우자 스트리밍 엔진의 웹 UI와 REST API의 관계는?
Wowza Streaming Engine Manager는 사용자가 편리하게 서버를 관리할 수 있도록 웹 UI를 제공하지만, 실제 상태 조회와 설정 변경은 와우자 REST API를 통해 처리한다. 따라서 REST API가 중지되거나 TCP 8087 포트에 접근할 수 없으면 웹 UI의 관리 기능도 정상적으로 동작하지 않는다.
와우자 REST API를 외부에서 사용하려면 어느 파일을 수정해야 하는가?
와우자 REST API의 외부 접속 설정은 Server.xml 파일에서 관리한다. 이 파일의 <RESTInterface> 블록에서 포트, 인증 방식, IP 화이트리스트와 SSL 관련 설정을 확인할 수 있다.
와우자 REST API에 접속할 수 있는 IP 주소를 지정하는 방법은?
Server.xml<IPWhiteList> 태그에 접속을 허용할 IP 주소나 대역을 입력한다. 여러 주소는 쉼표로 구분하며, 와일드카드 *를 사용해 특정 IP 대역을 지정할 수도 있다.
Server.xml의 IPWhiteList에서 127.0.0.1을 유지해야 하는 이유는?
127.0.0.1은 로컬 호스트를 의미하며 Wowza Streaming Engine Manager가 같은 서버의 REST 인터페이스에 접속할 때 사용한다. 이 주소를 삭제하면 웹 UI의 상태 조회와 설정 변경 기능이 정상적으로 동작하지 않는다.
cURL이란 무엇이며 와우자 REST API에서 어떻게 사용하는가?
cURL은 HTTP와 HTTPS를 비롯한 여러 네트워크 프로토콜을 이용해 서버에 요청을 보내고 응답을 확인하는 명령줄 도구다. 와우자 REST API의 접속 상태를 시험하거나 서버 정보를 조회하고 반복 작업을 배치 파일로 자동화할 때 사용할 수 있다.
윈도우에서 cURL이 설치되어 있는지 확인하는 방법은?
명령 프롬프트를 실행한 뒤 curl --version을 입력하고 Enter 키를 누른다. 버전과 지원 프로토콜 정보가 출력되면 현재 윈도우 환경에서 cURL을 사용할 수 있다는 의미다.
와우자 REST API에 GET 요청을 보내는 cURL 명령의 기본 형식은?
기본 형식은 curl -X "GET" "http://아이디:암호@서버주소:8087/요청경로"다. 요청 경로를 생략하면 와우자 엔진의 기본 응답을 확인할 수 있으며, 서버·로그·어플리케이션과 같은 자원을 조회하려면 해당 REST API 경로를 추가한다.
와우자 REST API 외부 접속 설정이 정상적으로 적용되었는지 확인하는 방법은?
Server.xml을 수정한 뒤 와우자 서비스를 재시작하고, 외부 컴퓨터에서 cURL 요청을 다시 전송한다. 와우자 버전이나 요청한 서버 정보가 반환되면 외부 접속과 인증이 정상적으로 처리된 것이며, 403 오류가 반환되면 접속한 IP 주소가 화이트리스트에 포함되어 있는지 확인해야 한다.

갱신 내역

  • 최초 게시
  • 1차 수정
  • 2차 수정 및 주소 이전