fatedier/frp · error

unknown multiplexer [%s]

Error message

unknown multiplexer [%s]

What it means

TCPMuxProxy.Run dispatches on cfg.Multiplexer and currently only implements the httpconnect multiplexer; any other value falls through to "unknown multiplexer [%s]". The proxy is then closed, so the tcpmux proxy never becomes reachable.

Source

Thrown at server/proxy/tcpmux.go:95

	addrs := make([]string, 0)
	for _, domain := range domains {
		addrs, err = pxy.httpConnectListen(domain, pxy.cfg.RouteByHTTPUser, pxy.cfg.HTTPUser, pxy.cfg.HTTPPassword, addrs)
		if err != nil {
			return "", err
		}
	}

	pxy.startCommonTCPListenersHandler()
	remoteAddr = strings.Join(addrs, ",")
	return remoteAddr, err
}

func (pxy *TCPMuxProxy) Run() (remoteAddr string, err error) {
	switch v1.TCPMultiplexerType(pxy.cfg.Multiplexer) {
	case v1.TCPMultiplexerHTTPConnect:
		remoteAddr, err = pxy.httpConnectRun()
	default:
		err = fmt.Errorf("unknown multiplexer [%s]", pxy.cfg.Multiplexer)
	}

	if err != nil {
		pxy.Close()
	}
	return remoteAddr, err
}

func (pxy *TCPMuxProxy) Close() {
	pxy.BaseProxy.Close()
}

View on GitHub (pinned to 6c8a8d0a97)

Solutions

  1. Set multiplexer = "httpconnect" on the tcpmux proxy
  2. Check for stray whitespace or wrong case in the value
  3. Remove the field if your frp version defaults it correctly, but the literal "httpconnect" is the safe form

Example fix

# before
[[proxies]]
type = "tcpmux"
multiplexer = "httpsconnect"

# after
[[proxies]]
type = "tcpmux"
multiplexer = "httpconnect"
Defensive patterns

Strategy: validation

Validate before calling

// Validate tcpmux config before submitting it.
if p.Type == "tcpmux" && p.Multiplexer != "httpconnect" {
    return fmt.Errorf("tcpmux multiplexer must be 'httpconnect', got %q", p.Multiplexer)
}

Prevention

When it happens

Trigger: Declaring a tcpmux proxy with multiplexer set to something other than "httpconnect" (typos like "http-connect", "HTTPSConnect", or empty/other values that escaped earlier validation).

Common situations: Hand-written ini/toml with a case or spelling mistake; configs ported from other tools expecting "httpsconnect"; omitting the multiplexer field where it is required.

Related errors


AI-assisted analysis of fatedier/frp@6c8a8d0a97 (2026-08-15). Data as JSON: /api/errors/07d94e96c4558419. Report an issue: GitHub.