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 <noreply@anthropic.com>
This commit is contained in:
xfy 2026-05-07 17:44:57 +08:00
parent 03c27c8d95
commit 9c46c8bab8

View File

@ -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)