diff --git a/containers_part1.go b/containers_part1.go index 82656b5..6d37c01 100644 --- a/containers_part1.go +++ b/containers_part1.go @@ -75,7 +75,7 @@ func setupContainers(config Config, clientTitle string, clientInfo *ClientInfo, ptafConfig = clientInfo.PTAFConfig.String } - changed, err := generateNginxConf(nginxConfPath, config, ptafConfig, existingPodIP, clientInfo.Debug, getPtafFallbackCode(*clientInfo)) + changed, err := generateNginxConf(nginxConfPath, config, ptafConfig, existingPodIP, clientInfo.Debug, getPtafFallbackCode(*clientInfo), clientInfo.WorkerProcesses) if err != nil { return fmt.Errorf("ошибка генерации nginx.conf: %w", err) } diff --git a/containers_part2.go b/containers_part2.go index be08502..b55a4bb 100644 --- a/containers_part2.go +++ b/containers_part2.go @@ -400,7 +400,10 @@ func reloadAngie() { } // generateNginxConf генерирует основной nginx.conf для PTAF -func generateNginxConf(filePath string, config Config, ptafConfig string, existingPodIP string, debug bool, ptafFallbackCode string) (bool, error) { +func generateNginxConf(filePath string, config Config, ptafConfig string, existingPodIP string, debug bool, ptafFallbackCode string, workerProcesses int) (bool, error) { + if workerProcesses <= 0 { + workerProcesses = 4 + } var randomIP string if existingPodIP != "" { randomIP = existingPodIP @@ -538,7 +541,7 @@ http { include /opt/ptaf/conf/conf.d/*.conf; } -`, config.WorkerProcesses, randomIP, ptafLogLevel, debugEnv, hostname, errorLogLevel, config.WorkerConnections, clientTitle, ptafFallbackCode, ptafConfig) +`, workerProcesses, randomIP, ptafLogLevel, debugEnv, hostname, errorLogLevel, config.WorkerConnections, clientTitle, ptafFallbackCode, ptafConfig) return writeFileIfChanged(filePath, content) } diff --git a/db.go b/db.go index 6cfc33f..259f651 100644 --- a/db.go +++ b/db.go @@ -99,7 +99,7 @@ func getClientInfoByInstance(db *sql.DB, instance string) ([]ClientInfo, error) query := ` SELECT containers_count, ptaf_config, client_title, fluent_bit_port, waf_instance, docker_image, docker_image_download, debug, shm_size, ptaf_fallback_code, - sp_antiddos, real_ip_networks + sp_antiddos, real_ip_networks, worker_processes FROM client_info WHERE waf_instance = $1 ` @@ -130,6 +130,7 @@ func getClientInfoByInstance(db *sql.DB, instance string) ([]ClientInfo, error) &ci.PtafFallbackCode, &ci.SpAntiddos, pq.Array(&ci.RealIPNetworks), + &ci.WorkerProcesses, ) if err != nil { return nil, fmt.Errorf("ошибка сканирования строки: %w", err) @@ -216,7 +217,7 @@ func getClientInfoByClientTitle(db *sql.DB, clientTitle string) (*ClientInfo, er query := ` SELECT containers_count, ptaf_config, client_title, fluent_bit_port, waf_instance, docker_image, docker_image_download, debug, shm_size, ptaf_fallback_code, - sp_antiddos, real_ip_networks + sp_antiddos, real_ip_networks, worker_processes FROM client_info WHERE client_title = $1 ` @@ -236,6 +237,7 @@ func getClientInfoByClientTitle(db *sql.DB, clientTitle string) (*ClientInfo, er &clientInfo.PtafFallbackCode, &clientInfo.SpAntiddos, pq.Array(&clientInfo.RealIPNetworks), + &clientInfo.WorkerProcesses, ) if err != nil { if strings.Contains(err.Error(), "does not exist") { diff --git a/types.go b/types.go index e537489..8c60d9b 100644 --- a/types.go +++ b/types.go @@ -55,6 +55,7 @@ type ClientInfo struct { PtafFallbackCode sql.NullString // Код ответа ptaf_fallback: число или 'pass' (дефолт: 418) SpAntiddos bool // Использовать антиддос сети для set_real_ip (дефолт true) RealIPNetworks []string // Кастомные сети для set_real_ip если SpAntiddos = false + WorkerProcesses int // Количество worker процессов nginx (дефолт 4) } // Структуры для API ответов