코드에서 구성
Ktor를 사용하면 호스트 주소, 포트,
embeddedServer
를 사용하면 원하는 파라미터를 함수에 직접 전달하여 서버를 구성할 수 있습니다. embeddedServer 함수는
이 섹션에서는 embeddedServer
를 실행하는 몇 가지 다른 예시를 살펴보고, 서버를 효과적으로 구성하는 방법을 설명합니다.
기본 구성
아래 코드 스니펫은 Netty 엔진과 8080
포트를 사용한 기본 서버 설정을 보여줍니다.
port
파라미터를 0
으로 설정하여 서버를 임의의 포트에서 실행할 수 있습니다. embeddedServer
함수는 엔진 인스턴스를 반환하므로, ApplicationEngine.resolvedConnectors 함수를 사용하여 코드에서 포트 값을 얻을 수 있습니다.
엔진 구성
embeddedServer
함수를 사용하면 configure
파라미터를 통해 엔진별 옵션을 전달할 수 있습니다. 이 파라미터에는 모든 엔진에 공통적으로 적용되며 ApplicationEngine.Configuration 클래스에 노출되는 옵션이 포함됩니다.
아래 예시는 Netty
엔진을 사용하여 서버를 구성하는 방법을 보여줍니다. configure
블록 내에서 호스트와 포트를 지정하기 위해 connector
를 정의하고 다양한 서버 파라미터를 사용자 정의합니다.
connectors.add()
메서드는 지정된 호스트(127.0.0.1
)와 포트(8080
)를 가진 커넥터를 정의합니다.
이러한 옵션 외에도 다른 엔진별 속성을 구성할 수 있습니다.
Jetty
Jetty 관련 옵션은 JettyApplicationEngineBase.Configuration 클래스에 의해 노출됩니다.
Jetty 서버는 configureServer 블록 내에서 구성할 수 있으며, 이 블록은 Server 인스턴스에 대한 접근을 제공합니다.
idleTimeout
속성을 사용하여 연결이 닫히기 전까지 유휴 상태로 있을 수 있는 시간(기간)을 지정합니다.
Tomcat
Tomcat을 엔진으로 사용하는 경우, configureTomcat 속성을 사용하여 구성할 수 있으며, 이 속성은 Tomcat 인스턴스에 대한 접근을 제공합니다.
사용자 지정 환경
아래 예시는 ApplicationEngine.Configuration 클래스로 표현되는 사용자 지정 구성을 사용하여 여러 커넥터 엔드포인트가 있는 서버를 실행하는 방법을 보여줍니다.
전체 예시는 embedded-server-multiple-connectors 를 참조하세요.
TIP
사용자 지정 환경을 사용하여 HTTPS를 제공 할 수도 있습니다.
명령줄 구성
Ktor를 사용하면 명령줄 인수를 사용하여 embeddedServer
를 동적으로 구성할 수 있습니다. 이는 포트, 호스트 또는 타임아웃과 같은 구성이 런타임에 지정되어야 하는 경우에 특히 유용합니다.
이를 위해 CommandLineConfig 클래스를 사용하여 명령줄 인수를 구성 객체로 파싱하고 구성 블록 내에서 전달합니다.
이 예시에서 Application.Configuration
의 takeFrom()
함수는 port
및 host
와 같은 엔진 구성 값을 오버라이드하는 데 사용됩니다. loadCommonConfiguration()
함수는 타임아웃과 같은 루트 환경에서 구성을 로드합니다.
서버를 실행하려면 다음과 같이 인수를 지정합니다.
TIP
정적 구성의 경우, 구성 파일이나 환경 변수를 사용할 수 있습니다. 자세한 내용은 파일 구성 을 참조하세요.