From 1804a7c30146cf8730b251f5ac7c8236bde1ce41 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 5 Oct 2025 11:26:46 -0600 Subject: [PATCH] refactor: remove unnecessary middleware checks in Traefik config generation --- .../server/src/utils/traefik/application.ts | 9 -------- .../server/src/utils/traefik/middleware.ts | 23 ++++++++++--------- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/packages/server/src/utils/traefik/application.ts b/packages/server/src/utils/traefik/application.ts index 8e9d7afd7..b18161c76 100644 --- a/packages/server/src/utils/traefik/application.ts +++ b/packages/server/src/utils/traefik/application.ts @@ -263,15 +263,6 @@ export const writeTraefikConfigRemote = async ( try { const { DYNAMIC_TRAEFIK_PATH } = paths(true); const configPath = path.join(DYNAMIC_TRAEFIK_PATH, `${appName}.yml`); - if (traefikConfig.http?.middlewares) { - // traefik will fail to start if the file contains middlewares entry but no middlewares are defined - const hasNoMiddlewares = - Object.keys(traefikConfig.http.middlewares).length === 0; - if (hasNoMiddlewares) { - // if there aren't any middlewares, remove the whole section - delete traefikConfig.http.middlewares; - } - } const yamlStr = stringify(traefikConfig); await execAsyncRemote(serverId, `echo '${yamlStr}' > ${configPath}`); } catch (e) { diff --git a/packages/server/src/utils/traefik/middleware.ts b/packages/server/src/utils/traefik/middleware.ts index 636b2d367..1c412d45a 100644 --- a/packages/server/src/utils/traefik/middleware.ts +++ b/packages/server/src/utils/traefik/middleware.ts @@ -103,14 +103,6 @@ export const loadRemoteMiddlewares = async (serverId: string) => { export const writeMiddleware = (config: FileConfig) => { const { DYNAMIC_TRAEFIK_PATH } = paths(); const configPath = join(DYNAMIC_TRAEFIK_PATH, "middlewares.yml"); - if (config.http?.middlewares) { - // traefik will fail to start if the file contains middlewares entry but no middlewares are defined - const hasNoMiddlewares = Object.keys(config.http.middlewares).length === 0; - if (hasNoMiddlewares) { - // if there aren't any middlewares, remove the whole section - delete config.http.middlewares; - } - } const newYamlContent = stringify(config); writeFileSync(configPath, newYamlContent, "utf8"); }; @@ -119,6 +111,18 @@ export const createPathMiddlewares = async ( app: ApplicationNested, domain: Domain, ) => { + const { appName } = app; + const { uniqueConfigKey, internalPath, stripPath, path } = domain; + + // Early return if there's no path middleware to create + const needsInternalPathMiddleware = + internalPath && internalPath !== "/" && internalPath !== path; + const needsStripPathMiddleware = stripPath && path && path !== "/"; + + if (!needsInternalPathMiddleware && !needsStripPathMiddleware) { + return; + } + let config: FileConfig; if (app.serverId) { @@ -135,9 +139,6 @@ export const createPathMiddlewares = async ( } } - const { appName } = app; - const { uniqueConfigKey, internalPath, stripPath, path } = domain; - if (!config.http) { config.http = { middlewares: {} }; }