frp vs SNI Proxy
frp
gofrp.orgSNI Proxy
github.comSide by side
| Figure | frp | SNI Proxy |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Windows | Yes | — |
| macOS | Yes | Yes |
| Linux | Yes | Yes |
| Android | Yes | — |
| Self-hosted | Yes | Yes |
| Plans published | 1 | 1 |
| Spec score · Reverse Proxy Software | 8.2 (#12) | 7.4 (#19) |
| Configuration | Configuration files support TOML, YAML, and JSON; the older INI format remains supported but is no longer recommended. | Host routing tables can match exact hostnames or regular expressions, and can use a fallback server when the initial request has no hostname. |
| License | The GitHub repository identifies the project license as Apache-2.0. | The repository identifies its license as BSD-2-Clause. |
| Protocols | It supports TCP, UDP, HTTP, and HTTPS, and client-server communication also supports QUIC, KCP, WebSocket, and other protocols. | It supports TLS and HTTP, but the maintainer says it does not support HTTP/2 hostname multiplexing or HTTP/3 over QUIC. |
| Purpose | frp is a high-performance reverse proxy for exposing intranet services to the public network through nodes with public IP addresses. | SNI Proxy routes incoming HTTP and TLS connections using the hostname in the initial request of a TCP session. |
Plans
In their own words
frp
frp is a free, self-hosted reverse proxy for making intranet services reachable from the public network through nodes with public IP addresses. It supports TCP, UDP, HTTP, and HTTPS proxying, while client-server communication also supports QUIC, KCP, WebSocket, and other protocols. Its XTCP mode uses P2P hole punching so successful connections send traffic directly rather than through frps, but success depends on the network’s NAT type and cannot be assured. Client and server authentication support tokens and OIDC, with token authentication as the default; encryption is among the project’s listed capabilities. Proxy groups can balance load, and TCP or HTTP health checks can remove failed services from frps. Monitoring can run in memory or through Prometheus, which requires the Dashboard to be enabled. frps has a browser Dashboard for status and proxy statistics, while frpc includes an Admin UI for proxy status and configuration. Configuration supports TOML, YAML, and JSON; INI is still supported but no longer recommended. Written in Go, frp provides platform-specific binaries for cross-platform deployment without additional dependencies. The project is under development and says version 2 will not be compatible with version 1.