返回介绍

Server options

发布于 2024-02-12 19:53:56 字数 9922 浏览 0 评论 0 收藏 0

options 控制服务器对象的行为。注意 options 对象是深拷贝的(除了 listener 属性是浅拷贝)并且不能包含任何不安全的值来执行【perform】深拷贝

所有的选项都是可选的。

server.options.address

默认值: '0.0.0.0' (所有可用的网络接口)

设置服务器所要监听的主机名或者 IP 地址。如果没有配置,默认会为已提供的 host 选项,否则为所有可用的网络接口。设置 '127.0.0.1''localhost' 限制服务器仅来自同一主机。

server.options.app

默认值: {} .

提供特定于【specific】应用程序的配置,以后可以通过【via】它进行访问 server.settings.app 。框架不与此对象交互【interact】。它只是提供一个随处可用的 server 的引用。

注意与 server.settings.app 的区别,它用于存储静态的配置值。 server.app 用于存储运行时的状态。

server.options.autoListen

默认值: true .

用于禁用 listener 的自动初始化。值为 false 时,表示【indicates】框架外将手动开启 listener

不能与 port 一起设置为 false

server.options.cache

默认值: { provider: { constructor: require('catbox-memory'), options: { partition: 'hapi-cache' } } } .

设置服务端缓存的提供者程序。每个服务器包含一个默认用于存储应用程序状态的缓存。默认情况下,创建了一个简单的基于内存的缓存,其容量和功能有限。

hapi 使用 catbox 为其缓存实现【implementation】,包括对常见存储解决方案的支持(例如 Redis, MongoDB, Memcached, Riak 等等)。仅当 methods 和 plugins 明确存储状态在缓存中时才使用缓存。

服务器缓存配置仅定义存储容器本身。配置可以指定一个或多个(数组):

  • 一个类或者原型方法(通常通过在 catbox 策略上调用 require() 来获得,例如 require('catbox-redis') )。一个新的 catbox client 将使用此函数在内部【internally】创建。

  • 配置对象具有以下内容:

    • engine - 一个类, 原型方法, 或 catbox 对象.

    • name - 稍后为 server methods 或 plugins 提供或配置缓存时使用的标识符。每个缓存名称必须是惟一的。单一项可以省略定义默认缓存的 name 选项。如果每个缓存都包含 name ,还会配置默认的内存缓存。

    • provider - a class, a constructor function, or an object with the following:

      • constructor - a class or a prototype function.

      • options - (optional) a settings object passed as-is to the constructor with the following:

        • partition - (optional) string used to isolate cached data. Defaults to 'hapi-cache' .
        • other constructor-specific options passed to the constructor on instantiation.
    • shared - 如果为 true , 允许多个缓存用户共享同一个片段【segment】 (例如多个方法使用相同的缓存存储容器). 默认为 false .

    • One (and only one) of engine or provider is required per configuration object.

server.options.compression

默认值: { minBytes: 1024 } .

定义服务端控制的内容编码请求。如果 false ,相应内容编码被禁用,并且服务器不执行【perform】压缩

server.options.compression.minBytes

默认值: '1024'.

设置最小响应有效负荷大小(以字节为单位),它是内容编码压缩所必须的。 如果有效负载大小低于限制,则不执行压缩。

server.options.debug

默认值: { request: ['implementation'] } .

确定【Determines】将哪些日志事件发送到控制台。仅用于开发模式并且不影响【affect】记录实际内部和收录的事件。设置 false 去关闭所有输出日志,或者传入一个对象:

  • log - 当通过 server.log() 记录事件时,通过 console.error() 显示的服务器日志标记的字符串数组以及 内部生成 server logs 。 默认为无输出。

  • request - 当通过 server.log() 记录事件时,通过 console.error() 显示的请求日志标记的字符串数组以及 内部生成 server logs 。 例如,想要展示所有错误,可以设置选项为 ['error'] 。设置 false 关闭所有输出 debug 信息。设置 '*' 显示所有请求日志。 默认为外部代码中抛出的未捕获错误(这些错误会自动处理并导致内部服务器错误响应)或由于开发人员导致的运行时错误

举个例子, 为了展示所有错误, 设置 log or request['error'] . 关闭所有输出,设置 log or requestfalse . 展示所有服务器日志, 设置 log or request'*' . 关闭所有服务器日志, 设置 debugfalse .

server.options.host

默认值: 操作系统的主机名,如果不可用默认为 'localhost'

公共主机名或 IP 。 用于设置 server.info.hostserver.info.uriaddress 没有指定.

server.options.listener

默认值: none.

可选的 node HTTP (或 HTTPS) http.Server 对象 (或具有兼容【compatible】接口的对象).

如果 listener 需要手动启动,设置 autoListenfalse

如果 listener 使用 TLS, 设置 tlstrue

server.options.load

默认值: { sampleInterval: 0, concurrent: 0 } .

服务器过载【excessive】处理的限制,其中:

  • sampleInterval - 采样频率,以毫秒为单位。 设置为 0 时,将忽略其他加载选项。 默认为 0 (没有抽样).

  • maxHeapUsedBytes - 使用 HTTP Server Timeout (503) 响应拒绝传入请求的最大 V8 堆大小。 默认为 0 (no limit).

  • maxRssBytes - 使用 HTTP Server Timeout (503) 响应拒绝传入请求的最大进程 RSS 大小。 默认为 0 (no limit).

  • maxEventLoopDelay - 使用 HTTP Server Timeout (503) 响应拒绝传入请求的最大事件循环延迟持续时间(以毫秒为单位)。 默认为 0 (no limit).

  • concurrent - 并行执行的最大请求数。这对于在实际处理程序计算负载较低的高负载部署中减少垃圾收集成本很有用。 例如,主要等待上游数据的处理程序将允许许多传入请求一直排队到处理程序生命周期阶段。 这将触发重垃圾收集负载,试图整理许多待处理对象。 减少正在处理的并发请求数可能会有所帮助。 这里没有建议的值 - 您需要测试哪种方法最适合您的特定部署。 默认为 0 (no queue).

server.options.mime

默认值: none.

生成服务器使用的 mime 数据库时传递给 mimos 模块的选项 (并通过 server.mime 访问):

  • 一个对象哈希,被合并到指定 here 的内置 mime 信息中

  • override - 一个对象哈希,被合并到指定 here 的内置 mime 信息中。 每个键值对代表一个单独的 mime 对象。 每个覆盖值必须包含:

    • key - 小写的 mime-type 字符串 (例如 'application/javascript' ).

    • value - 符合规范【specifications】的对象 here 。 其他值包含:

      • type - 指定 type 的结果, 默认为 key

      • predicate - 带签名的方法 function(mime) 当 mime 的类型在数据库中, 此函数执行以允许自定义

const options = {
  mime: {
    override: {
      'node/module': {
        source: 'iana',
        compressible: true,
        extensions: ['node', 'module', 'npm'],
        type: 'node/module'
      },
      'application/javascript': {
        source: 'iana',
        charset: 'UTF-8',
        compressible: true,
        extensions: ['js', 'javascript'],
        type: 'text/javascript'
      },
      'text/html': {
        predicate: function(mime) {
          if (someCondition) {
            mime.foo = 'test';
          }
          else {
            mime.foo = 'bar';
          }
          return mime;
        }
      }
    }
  }
};

server.options.operations

默认值: { cleanStop: true } .

定义服务器操作的服务器处理:

  • cleanStop - 如果为 true , 服务器跟踪打开的连接,并在服务器停止时正确关闭它们。 在正常负载下,这不应该干扰服务器性能。 但是,在严重的负载连接监控下,可能会消耗额外的资源并加剧这种情况。 如果服务器永远不会停止, 或者如果它被迫停止而不等待打开连接关闭, 将此设置为 false 可以节省未使用的资源。 默认为 true .

server.options.plugins

默认值: {} .

特定于插件的配置,以后可以通过 server.settings.plugins 访问。 plugins 是一个对象,其中每个键是插件名称,值是配置。注意它与 server.settings.pluginsserver.plugins 的不同,前者用于存储静态配置值,后者用于存储运行时的状态。

server.options.port

默认值: 0 (一个无常【ephemeral】的端口).

服务器要监听的 TCP 端口. 默认为服务器启动后的下一个可用端口。(并分配给 server.info.port ).

如果 port 是一个包含 '/' 的字符串,它用作 UNIX 域的 socket 路径。 如果以 '\.\pipe' 开头,它用作 Windows 命名管道。

server.options.query

默认值: {} .

定义服务器处理请求路径查询参数组件。

server.options.query.parser

默认值: none.

使用签名 function(searchParams)` 设置查询参数解析器方法,其中:

  • query - 包含传入的 request.query 参数的对象。
  • 该方法必须返回一个对象,其中每个键是一个参数,匹配值是参数值。 如果抛出该方法,则在调用 request.setUrl() 时将错误用作响应或返回。
const Qs = require('qs');

const options = {
  query: {
    parser: (query) => Qs.parse(query)
  }
};

server.options.router

默认值: { isCaseSensitive: true, stripTrailingSlash: false } .

控制传入请求 URI 与路由表的匹配方式:

  • isCaseSensitive - 确定【determines】路径 '/example' 和 '/EXAMPLE' 是否被视为不同的资源。默认为 true .

  • stripTrailingSlash - 删除传入路径上的尾部斜杠。默认为 false .

server.options.routes

默认值: none.

一个 route options 对象用于每个路由的默认配置。

server.options.state

默认值:

{
  strictHeader: true,
  ignoreErrors: false,
  isSecure: true,
  isHttpOnly: true,
  isSameSite: 'Strict',
  encoding: 'none'
}

为每个状态(cookie)显式【explicitly】设置默认配置通过 server.state() ](#server.state()) 或者 隐式(没有定义) 使用 state configuration 对象

server.options.tls

默认值: none.

用于创建 HTTPS 连接. tls 对象不变传递到 node HTTPS 服务器,如下所示 node HTTPS documentation

当传入一个已配置 listener 对象为 true 时,直接使用 TLS

server.options.uri

默认值: 由运行时的服务器信息构建

没有路径的完整公共 URI (例如 'http://example.com:8080'). 如果存在, 用作服务器的 server.info.uri , 否则由服务器设置构造.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文