From 71f8fc209f1dd1859f4eced426d36f3c47c4c685 Mon Sep 17 00:00:00 2001 From: Nikolai R Kristiansen Date: Fri, 10 Feb 2023 12:51:07 +0100 Subject: [PATCH 1/2] fix(techdocs-cli): Fix proxying to mkdocs The domain localhost may point to both 127.0.0.1 and ::1, ipv4 and ipv6 and when node tries to lookup localhost it might prefer ipv6 while mkdocs is only listening on ipv4. This tells node-proxy to target the ipv4 address instead of relying on localhost hostname lookup. Signed-off-by: Nikolai R Kristiansen --- packages/techdocs-cli/src/commands/serve/serve.ts | 2 +- packages/techdocs-cli/src/lib/httpServer.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/techdocs-cli/src/commands/serve/serve.ts b/packages/techdocs-cli/src/commands/serve/serve.ts index 48e48d4f66..b779731fae 100644 --- a/packages/techdocs-cli/src/commands/serve/serve.ts +++ b/packages/techdocs-cli/src/commands/serve/serve.ts @@ -127,7 +127,7 @@ export default async function serve(opts: OptionValues) { const httpServer = new HTTPServer( previewAppPath, port, - opts.mkdocsPort, + mkdocsExpectedDevAddr, opts.verbose, ); diff --git a/packages/techdocs-cli/src/lib/httpServer.ts b/packages/techdocs-cli/src/lib/httpServer.ts index c4bd5b823a..08987f3f1d 100644 --- a/packages/techdocs-cli/src/lib/httpServer.ts +++ b/packages/techdocs-cli/src/lib/httpServer.ts @@ -23,26 +23,26 @@ export default class HTTPServer { private readonly proxyEndpoint: string; private readonly backstageBundleDir: string; private readonly backstagePort: number; - private readonly mkdocsPort: number; + private readonly mkdocsTargetAddress: string; private readonly verbose: boolean; constructor( backstageBundleDir: string, backstagePort: number, - mkdocsPort: number, + mkdocsTargetAddress: string, verbose: boolean, ) { this.proxyEndpoint = '/api/techdocs/'; this.backstageBundleDir = backstageBundleDir; this.backstagePort = backstagePort; - this.mkdocsPort = mkdocsPort; + this.mkdocsTargetAddress = mkdocsTargetAddress; this.verbose = verbose; } // Create a Proxy for mkdocs server private createProxy() { const proxy = httpProxy.createProxyServer({ - target: `http://localhost:${this.mkdocsPort}`, + target: this.mkdocsTargetAddress, }); return (request: http.IncomingMessage): [httpProxy, string] => { From dcacf94912bb733202eb945c66a802c12f800cb5 Mon Sep 17 00:00:00 2001 From: Nikolai R Kristiansen Date: Fri, 10 Feb 2023 13:09:50 +0100 Subject: [PATCH 2/2] docs: Add changeset Signed-off-by: Nikolai R Kristiansen --- .changeset/flat-lizards-poke.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .changeset/flat-lizards-poke.md diff --git a/.changeset/flat-lizards-poke.md b/.changeset/flat-lizards-poke.md new file mode 100644 index 0000000000..bc180836fa --- /dev/null +++ b/.changeset/flat-lizards-poke.md @@ -0,0 +1,10 @@ +--- +'@techdocs/cli': patch +--- + +Fix proxying to mkdocs + +The domain localhost may point to both 127.0.0.1 and ::1, ipv4 and ipv6 +and when node tries to lookup localhost it might prefer ipv6 while mkdocs +is only listening on ipv4. This tells node-proxy to target the ipv4 address +instead of relying on localhost hostname lookup.