Skip to content

代码中的配置

Ktor 允许你直接在代码中配置各种服务器形参,包括主机地址、端口、

服务器模块
模块允许你通过路由分组来组织应用程序。
等。配置方法取决于你设置服务器的方式——是使用
embeddedServer 还是 EngineMain
了解如何根据应用程序部署需求创建服务器。

使用 embeddedServer 时,你可以通过将所需的形参直接传递给该函数来配置服务器。 embeddedServer 函数接受不同的形参来配置服务器,包括一个

服务器引擎
了解处理网络请求的引擎。
、服务器监听的主机和端口,以及其他配置。

在本节中,我们将介绍运行 embeddedServer 的几个不同示例,展示如何配置服务器以满足你的需求。

基本配置

下面的代码片段展示了一个使用 Netty 引擎和 8080 端口的基本服务器设置。

kotlin

请注意,你可以将 port 形参设置为 0,以便在随机端口上运行服务器。 embeddedServer 函数会返回一个引擎实例,因此你可以在代码中使用 ApplicationEngine.resolvedConnectors 函数获取端口值。

引擎配置

embeddedServer 函数允许你使用 configure 形参传递引擎特有的选项。此形参包含所有引擎共有的选项,并由 ApplicationEngine.Configuration 类公开。

以下示例展示了如何使用 Netty 引擎配置服务器。在 configure 代码块中,我们定义了一个 connector 来指定主机和端口,并自定义各种服务器形参:

kotlin

connectors.add() 方法定义了一个连接器,其中包含指定的主机(127.0.0.1) 和端口(8080)。

除了这些选项,你还可以配置其他引擎特有的属性。

Netty

Netty 特有的选项由 NettyApplicationEngine.Configuration 类公开。

kotlin

Jetty

Jetty 特有的选项由 JettyApplicationEngineBase.Configuration 类公开。

你可以在 configureServer 代码块内配置 Jetty 服务器,该代码块提供对 Server 实例的访问。

使用 idleTimeout 属性指定连接在关闭前可以空闲的时长。

kotlin

CIO

CIO 特有的选项由 CIOApplicationEngine.Configuration 类公开。

kotlin

Tomcat

如果你使用 Tomcat 作为引擎,则可以使用 configureTomcat 属性配置它,该属性提供对 Tomcat 实例的访问。

kotlin

自定义环境

以下示例展示了如何使用由 ApplicationEngine.Configuration 类表示的自定义配置来运行具有多个连接器端点的服务器。

kotlin

有关完整示例,请参见 embedded-server-multiple-connectors

TIP

你还可以使用自定义环境来 提供 HTTPS 服务

命令行配置

Ktor 允许你使用命令行实参动态配置 embeddedServer。这 在需要运行时指定端口、主机或超时等配置的情况下特别有用。

为此,请使用 CommandLineConfig 类将命令行实参解析为配置对象,并在配置代码块中传递它:

kotlin

在此示例中,Application.Configuration 中的 takeFrom() 函数用于覆盖引擎配置值,例如 porthostloadCommonConfiguration() 函数从根环境(例如超时)加载配置。

要运行服务器,请按以下方式指定实参:

shell

TIP

对于静态配置,你可以使用配置文件或环境变量。 要了解更多信息,请参见 文件中的配置