fatedier/frp · error
proxy type not support
Error message
proxy type not support
What it means
NewProxy looks up a factory by the concrete type of the proxy configurer in proxyFactoryRegistry; when no factory is registered for that reflect.Type it returns "proxy type not support". This means the server received a NewProxy request for a proxy kind it cannot instantiate. It usually indicates a client/server capability mismatch rather than a typo in user config (unknown type names are rejected earlier at config validation).
Source
Thrown at server/proxy/proxy.go:562
rc: options.ResourceController,
listeners: make([]net.Listener, 0),
poolCount: options.PoolCount,
getWorkConnFn: options.GetWorkConnFn,
serverCfg: options.ServerCfg,
encryptionKey: options.EncryptionKey,
limiter: limiter,
xl: xl,
ctx: xlog.NewContext(ctx, xl),
userInfo: options.UserInfo,
loginMsg: options.LoginMsg,
configurer: configurer,
wireProtocol: options.WireProtocol,
udpPacketCodec: options.UDPPacketCodec,
}
factory := proxyFactoryRegistry[reflect.TypeOf(configurer)]
if factory == nil {
return pxy, fmt.Errorf("proxy type not support")
}
pxy = factory(&basePxy)
if pxy == nil {
return nil, fmt.Errorf("proxy not created")
}
return pxy, nil
}
type Manager struct {
// proxies indexed by proxy name
pxys map[string]Proxy
mu sync.RWMutex
}
func NewManager() *Manager {
return &Manager{
pxys: make(map[string]Proxy),View on GitHub (pinned to 6c8a8d0a97)
Solutions
- Upgrade frps to at least the frpc version so the proxy type registry covers all types the client can send
- Downgrade or reconfigure the client to stop using the unsupported proxy type
- For custom proxy types, ensure the server-side package is imported so its init() registers the factory
Example fix
# before (frpc newer than frps) frpc: type = somenewtype # frps errors: proxy type not support # after # upgrade frps to the same release as frpc, or remove the proxy block
Defensive patterns
Strategy: try-catch
Try / catch
pxy, err := proxy.NewProxy(ctx, options)
if err != nil {
if strings.Contains(err.Error(), "proxy type not support") {
// capability mismatch: reject config or fall back to a supported type
log.Printf("proxy type unsupported by this frps; pin client/server versions")
}
return err
} Prevention
- Pin frpc and frps to the same release in deployment pipelines
- Validate the configured proxy type against a supported list before shipping config
- Run a preflight login/proxy handshake in CI against the target frps version
When it happens
Trigger: A newer frpc that supports a new proxy type connects to an older frps whose registry lacks that type; a custom fork adds a proxy type on the client but not the server; internal code calls proxy.NewProxy with a configurer whose package type was re-registered or renamed.
Common situations: Version skew between frpc and frps after upgrading only one side; custom builds that add proxy types on one component; importing proxy packages in a different order in a fork so init() registration does not happen.
Related errors
- subdomain is not supported because this feature is not enabl
- '.' and '*' are not supported in subdomain
- unknown proxy config type
- proxy name [%s] is already in use
- missing v2 crypto negotiation
AI-assisted analysis of fatedier/frp@6c8a8d0a97 (2026-08-15).
Data as JSON: /api/errors/9714faffe895be1b.
Report an issue: GitHub.