http.limits

limits用来设置对接收到的HTTP请求的限制。请求头和正文大小都可以被限制。

请求头大小可以限制为某些字节。由于Go库的工作方式,一个限制将会应用于同一监听器上的所有站点(如果有多个配置,则选择最小限制)。

请求体大小也可以是限制的。当从请求体读取的字节数超过限制时,读取将终止,并向客户端发送一个错误。(从技术上讲,它依赖于每个读取请求主体的每一个中间件来正确处理错误,但是标准的Caddy指令应该返回HTTP 413状态码。)默认情况下,没有大小限制。

大小值必须是正整数,并被解释为字节,除非给定了单位。有效示例:3500(3500字节)、500kb(500千字节)、10mb(10兆字节)、1gb (1千兆字节)。

语法

  1. limits size
  • size 是整个站点的头信息和主体(单独)最大大小。

要做更多控制,需要打开一个块:

  1. limits {
  2. header size
  3. body [path] size
  4. }
  • header 限制请求头的大小。
  • body 限制请求体的大小,可选项可设置只用于一个基本路径。

示例

限制所有请求的头和主体最多7.5k字节。

  1. limits 7500

只对/upload路径限制请求体最多50兆字节:

  1. limits {
  2. body /upload 50mb
  3. }

各种限制:

  1. limits {
  2. header 100KB
  3. body /upload 100MB
  4. body /profile 25KB
  5. body /api 10KB
  6. }