Server 对象支持通过配置文件进行便捷的配置。支持的配置选项以及配置说明请查看接口文档说明,文档中有详细说明,以下章节不会对配置选项作介绍。

当使用 g.Server(单例名称) 获取 Server 单例对象时,将会自动通过默认的配置管理对象获取对应的 Server 配置。默认情况下会读取 server.单例名称 配置项,当该配置项不存在时,将会读取 server 配置项。

支持的配置文件配置项请参考 Server 配置管理对象属性: https://pkg.go.dev/github.com/gogf/gf/v2/net/ghttp#ServerConfig

示例1,默认配置项

  1. server:
  2. address: ":80"
  3. serverRoot: "/var/www/Server"

随后可以使用 g.Server() 获取默认的单例对象时自动获取并设置该配置。

服务配置-配置文件 - 图1注意

在没有配置 address 的情况下, http server 将会使用本地网卡的所有 ip 地址加上 随机空闲端口 来启动(默认配置 :0)。如果想要指定 ip 但是使用随机空闲端口启动 http server,可以使用 ip:0 的格式来配置 address,例如: 192.168.1.1:0, 10.0.1.1:0

示例2,多个配置项

多个 Server 的配置示例:

  1. server:
  2. address: ":80"
  3. serverRoot: "/var/www/Server"
  4. server1:
  5. address: ":8080"
  6. serverRoot: "/var/www/Server1"
  7. server2:
  8. address: ":8088"
  9. serverRoot: "/var/www/Server2"

我们可以通过单例对象名称获取对应配置的 Server 单例对象:

  1. // 对应 server.server1 配置项
  2. s1 := g.Server("server1")
  3. // 对应 server.server2 配置项
  4. s2 := g.Server("server2")
  5. // 对应默认配置项 server
  6. s3 := g.Server("none")
  7. // 对应默认配置项 server
  8. s4 := g.Server()

示例3,较完整示例

比如上一个章节的示例,对应的配置文件如下:

  1. server:
  2. address: ":8199"
  3. serverRoot: "/var/www/Server"
  4. indexFiles: ["index.html", "main.html"]
  5. accessLogEnabled: true
  6. errorLogEnabled: true
  7. pprofEnabled: true
  8. logPath: "/var/log/ServerLog"
  9. sessionIdName: "MySessionId"
  10. sessionPath: "/tmp/MySessionStoragePath"
  11. sessionMaxAge: "24h"
  12. dumpRouterMap: false

同理,配置属性项的名称也不区分大小写,单词间也支持使用 -/ _ 符号连接。也就是说以下配置文件效果和上面的配置文件一致:

  1. server:
  2. address: ":8199"
  3. serverRoot: "/var/www/Server"
  4. indexFiles: ["index.html", "main.html"]
  5. accessLogEnabled: true
  6. errorLogEnabled: true
  7. pprofEnabled: true
  8. log-path: "/var/log/ServerLog"
  9. session_Id_Name: "MySessionId"
  10. Session-path: "/tmp/MySessionStoragePath"
  11. session_MaxAge: "24h"
  12. DumpRouterMap: false

服务配置-配置文件 - 图2提示

我们推荐配置文件中的配置项名称统一使用小驼峰的格式。

上传限制

Server 对于客户端提交的数据是由大小限制的,主要有两个配置参数控制:

  • MaxHeaderBytes:请求头大小限制,请求头包括客户端提交的 Cookie 数据,默认设置为 10KB
  • ClientMaxBodySize:客户端提交的 Body 大小限制,同时也影响文件上传大小,默认设置为 8MB

由于安全性的考虑,默认的上传限制都不是很高,特别是 ClientMaxBodySize 的大小限制,在需要文件上传的场景可适当考虑调整,通过配置文件配置即可,例如:

  1. server:
  2. maxHeaderBytes: "20KB"
  3. clientMaxBodySize: "200MB"

这样便修改请求头大小限制为 20KB,文件上传大小限制为 200MB。如果不想做上传大小做任何限制,那么将 clientMaxBodySize 设置为 0 即可。

日志配置

v2 版本开始, Server 增加了对配置文件中 Logger 的配置项支持,主要是为了统一日志组件配置、并解决日志滚动切分的问题。配置示例:

  1. server:
  2. address: ":8080"
  3. logger:
  4. path: "/var/log/server"
  5. file: "{Y-m-d}.log"
  6. stdout: false
  7. rotateSize: "100M"
  8. rotateBackupLimit: 10
  9. rotateBackupExpire: "60d"
  10. rotateBackupCompress: 9
  11. rotateCheckInterval: "24h"

关于其中 logger 项的详细介绍请参考 日志组件-配置管理 章节。