From 9c46c8bab8e1a46e96cb6df190bf3b7a16ae8ece Mon Sep 17 00:00:00 2001 From: xfy Date: Thu, 7 May 2026 17:44:57 +0800 Subject: [PATCH] fix(server): register status and pprof handlers in multi-server mode In startMultiServerMode, status and pprof handlers were not registered, causing /_status and /debug/pprof endpoints to return 404. Now these handlers are registered on the server with default: true, consistent with startVHostMode behavior. Also fixed cache API registration to use default server instead of first server. Co-Authored-By: Claude Opus 4.7 --- internal/server/server.go | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/internal/server/server.go b/internal/server/server.go index f5f56f3..1ff0ccb 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -644,8 +644,29 @@ func (s *Server) startMultiServerMode() error { // 创建路由器 router := handler.NewRouter() - // 注册缓存清理 API(仅第一个服务器) - if idx == 0 && serverCfg.CacheAPI != nil && serverCfg.CacheAPI.Enabled { + // 注册状态监控端点(仅默认服务器) + if serverCfg.Default && s.config.Monitoring.Status.Enabled { + statusHandler, err := NewStatusHandler(s, &s.config.Monitoring.Status) + if err != nil { + logging.Error().Msg("Failed to create status handler: " + err.Error()) + } else { + router.GET(statusHandler.Path(), statusHandler.ServeHTTP) + } + } + + // 注册 pprof 性能分析端点(仅默认服务器) + if serverCfg.Default && s.config.Monitoring.Pprof.Enabled { + pprofHandler, err := NewPprofHandler(&s.config.Monitoring.Pprof) + if err != nil { + logging.Error().Msg("Failed to create pprof handler: " + err.Error()) + } else { + router.GET(pprofHandler.Path(), pprofHandler.ServeHTTP) + router.GET(pprofHandler.Path()+"/{profile:*}", pprofHandler.ServeHTTP) + } + } + + // 注册缓存清理 API(仅默认服务器) + if serverCfg.Default && serverCfg.CacheAPI != nil && serverCfg.CacheAPI.Enabled { purgeHandler, purgeErr := NewPurgeHandler(s, serverCfg.CacheAPI) if purgeErr != nil { errCh <- fmt.Errorf("failed to create cache purge handler (server[%d]): %w", idx, purgeErr)