Skip to main content
Version: 2.8.x(Latest)

Server objects support convenient configuration through configuration files. Please refer to the API documentation for supported configuration options and explanations; the documentation provides detailed information, and the following sections will not introduce configuration options.

When using g.Server(singleton name) to obtain a Server singleton object, it will automatically obtain the corresponding Server configuration through the default configuration management object. By default, it reads the server.singleton name configuration item, and if that does not exist, it will read the server configuration item.

For supported configuration file options, refer to the Server configuration management object properties: https://pkg.go.dev/github.com/gogf/gf/v2/net/ghttp#ServerConfig

Example 1, Default Configuration Items

server:
address: ":80"
serverRoot: "/var/www/Server"

Later, you can use g.Server() to automatically obtain and set this configuration when acquiring the default singleton object.

warning

If address is not configured, the http server will start using all ip addresses of the local network card plus a random free port (default configuration :0). If you want to specify an ip but start the http server with a random free port, you can configure address in the format of ip:0, for example: 192.168.1.1:0, 10.0.1.1:0.

Example 2, Multiple Configuration Items

Example for multiple Server configurations:

server:
address: ":80"
serverRoot: "/var/www/Server"
server1:
address: ":8080"
serverRoot: "/var/www/Server1"
server2:
address: ":8088"
serverRoot: "/var/www/Server2"

We can obtain the corresponding Server singleton object through the singleton object name:

// Corresponding to server.server1 configuration item
s1 := g.Server("server1")
// Corresponding to server.server2 configuration item
s2 := g.Server("server2")
// Corresponding to default configuration item server
s3 := g.Server("none")
// Corresponding to default configuration item server
s4 := g.Server()

Example 3, More Complete Example

For example, for the example in the previous section, the corresponding configuration file is as follows:

server:
address: ":8199"
serverRoot: "/var/www/Server"
indexFiles: ["index.html", "main.html"]
accessLogEnabled: true
errorLogEnabled: true
pprofEnabled: true
logPath: "/var/log/ServerLog"
sessionIdName: "MySessionId"
sessionPath: "/tmp/MySessionStoragePath"
sessionMaxAge: "24h"
dumpRouterMap: false

Similarly, the names of configuration property items are not case-sensitive, and it also supports using -/_ symbols to connect words. That means the following configuration file has the same effect as the above one:

server:
address: ":8199"
serverRoot: "/var/www/Server"
indexFiles: ["index.html", "main.html"]
accessLogEnabled: true
errorLogEnabled: true
pprofEnabled: true
log-path: "/var/log/ServerLog"
session_Id_Name: "MySessionId"
Session-path: "/tmp/MySessionStoragePath"
session_MaxAge: "24h"
DumpRouterMap: false
tip

We recommend using camelCase format for configuration item names in configuration files.

Upload Limit

Server has size limits for data submitted by clients, controlled by two main configuration parameters:

  • MaxHeaderBytes: Request header size limit, the request header includes Cookie data submitted by the client, default is 10KB.
  • ClientMaxBodySize: Body size limit submitted by the client, also affecting file upload size, default is 8MB.

Due to security considerations, the default upload limits are not very high, especially the size limit of ClientMaxBodySize. In scenarios where file uploads are needed, you may consider adjusting, and it can be configured through a configuration file, for example:

server:
maxHeaderBytes: "20KB"
clientMaxBodySize: "200MB"

This way, the request header size limit is modified to 20KB, and the file upload size limit is 200MB. If you do not want to impose any limit on the upload size, set clientMaxBodySize to 0.

Log Configuration

Starting from version v2, Server added support for Logger configuration item in configuration files, mainly to unify log component configuration and solve log rolling split issues. Configuration example:

server:
address: ":8080"
logger:
path: "/var/log/server"
file: "{Y-m-d}.log"
stdout: false
rotateSize: "100M"
rotateBackupLimit: 10
rotateBackupExpire: "60d"
rotateBackupCompress: 9
rotateCheckInterval: "24h"

For detailed information on the logger item, please refer to the section Logging - Configuration.