in api/internal/conf/conf.go [187:291]
func setupConfig() {
// setup config file path
if ConfigFile == "" {
ConfigFile = "conf.yaml"
if profile := os.Getenv("APISIX_PROFILE"); profile != "" {
ConfigFile = "conf" + "-" + profile + ".yaml"
}
viper.SetConfigName(ConfigFile)
viper.SetConfigType("yaml")
viper.AddConfigPath(WorkDir + "/conf")
} else {
viper.SetConfigFile(ConfigFile)
}
// load config
if err := viper.ReadInConfig(); err != nil {
panic(fmt.Sprintf("fail to read configuration, err: %s", err.Error()))
}
// unmarshal config
config := Config{}
err := viper.Unmarshal(&config)
if err != nil {
panic(fmt.Sprintf("fail to unmarshal configuration: %s, err: %s", ConfigFile, err.Error()))
}
// listen
if config.Conf.Listen.Port != 0 {
ServerPort = config.Conf.Listen.Port
}
if config.Conf.Listen.Host != "" {
ServerHost = config.Conf.Listen.Host
}
// SSL
if config.Conf.SSL.Port != 0 {
SSLPort = config.Conf.SSL.Port
}
if config.Conf.SSL.Cert != "" {
SSLCert = config.Conf.SSL.Cert
}
if config.Conf.SSL.Key != "" {
SSLKey = config.Conf.SSL.Key
}
// ETCD Storage
if len(config.Conf.Etcd.Endpoints) > 0 {
initEtcdConfig(config.Conf.Etcd)
}
// error log
if config.Conf.Log.ErrorLog.Level != "" {
ErrorLogLevel = config.Conf.Log.ErrorLog.Level
}
if config.Conf.Log.ErrorLog.FilePath != "" {
ErrorLogPath = config.Conf.Log.ErrorLog.FilePath
}
// access log
if config.Conf.Log.AccessLog.FilePath != "" {
AccessLogPath = config.Conf.Log.AccessLog.FilePath
}
if !filepath.IsAbs(ErrorLogPath) {
if strings.HasPrefix(ErrorLogPath, "winfile") {
return
}
ErrorLogPath, err = filepath.Abs(filepath.Join(WorkDir, ErrorLogPath))
if err != nil {
panic(err)
}
if runtime.GOOS == "windows" {
ErrorLogPath = `winfile:///` + ErrorLogPath
}
}
if !filepath.IsAbs(AccessLogPath) {
if strings.HasPrefix(AccessLogPath, "winfile") {
return
}
AccessLogPath, err = filepath.Abs(filepath.Join(WorkDir, AccessLogPath))
if err != nil {
panic(err)
}
if runtime.GOOS == "windows" {
AccessLogPath = `winfile:///` + AccessLogPath
}
}
AllowList = config.Conf.AllowList
// set degree of parallelism
initParallelism(config.Conf.MaxCpu)
// set authentication
initAuthentication(config.Authentication)
// set Oidc
initOidc(config.Oidc)
// set plugin
initPlugins(config.Plugins)
// security configuration
initSecurity(config.Conf.Security)
}