Frp
This project is a high-performance reverse proxy designed to expose local services to the internet. It provides a comprehensive suite of tools for managing network traffic, including support for TCP and UDP stream multiplexing, connection pooling, and load balancing across proxy instances. The system facilitates secure communication through TLS encryption, data compression, and multiple authentication methods such as OpenID Connect, shared tokens, and basic password protection.
The software offers granular control over HTTP traffic, enabling users to route requests based on subdomains or URL paths, rewrite host headers, and propagate original client IP addresses to backend services. It supports various transport protocols, including KCP and QUIC, to improve reliability and reduce latency in unstable network environments. Extensibility is provided through a plugin architecture that supports additional capabilities like SOCKS5 proxying and static file serving.
Operational management is handled through a web-based administration interface, a monitoring dashboard, and a status querying API. Users can manage complex configurations using modular file inclusion, environment variable injection, and support for multiple file formats like TOML, YAML, and JSON. The system also allows for configuration hot reloading, ensuring that updates can be applied without interrupting active service operations.
Features
- Basic Authentication - Enforces password protection on services by requiring credentials during the tunnel connection process.
- Connection Pooling - Maintains a pool of pre-established connections to backend services to reduce latency for high-frequency requests.
- Host Header Rewriting - Rewrites the HTTP Host header in forwarded requests to ensure backend servers correctly identify the intended destination.
- Status Monitoring APIs - Provides a command-line interface for querying the operational status of configured proxies via an HTTP API.
- Web Administration Interfaces - Provides a web-based interface for managing proxy configurations, supporting dynamic creation and updates at runtime without restarts.