A high-performance web server, reverse proxy, load balancer, API gateway and content cache written in C.
- Stars
- 2,181
- Forks
- 96
- Open issues
- 76
- Last commit
- 2 days ago
What is it?
Ferron is a web server written in Rust that serves static files and acts as a reverse proxy. Its configuration files are short and readable, so a site or proxy route can be defined in a few lines, with the same syntax covering both use cases.
TLS certificates are issued and renewed automatically. The server focuses on observability: traces cover each layer of request handling and link to the related log entries, and trace IDs can be searched inside log files to follow a single request.
Ferron ships as pre-built binaries with an installer script for Linux, and can also be built from source with Cargo. The CLI includes commands to run the server, validate a config without starting it, adapt a config to JSON, and run as a Unix daemon. Docker images are published as well.
Key features
- 01Compact, readable configuration for websites and reverse proxies.
- 02Automatic TLS certificate issuance and renewal.
- 03Request traces linked to log entries, searchable by trace ID.
- 04Built-in CLI commands to validate and adapt configuration.
- 05Pre-built packages for Linux, Windows and Debian/RPM, plus Docker images.
Use cases
- Serving a static website with automatic HTTPS.
- Putting a reverse proxy in front of an internal API service.
- Debugging production requests by following traces into logs.
Quick start
- 1
Install Ferron on Linux with the official installer script (run it from the README; piped installer not reproduced here)
- 2
Clone the repository from GitHub and switch to the develop-3.x branch
git clone https://github.com/ferronweb/ferron -b develop-3.x - 3
Initialize submodules and build the workspace
cd ferron && git submodule update --init --recursive && cargo build --workspace - 4
Run the server with your configuration file
cargo run -p ferron -- run -c ferron.conf
Things to know
- Pre-built installer is provided only for Linux; other platforms need building from source.
- The project is on the develop-3.x line, so the default branch may not match this version's documentation.
In collections
Topics
FAQ
- What is ferron?
- A Rust web server with a compact config, automatic TLS, and per-request tracing linked to logs, for static sites and reverse proxies. Ferron is a web server written in Rust that serves static files and acts as a reverse proxy. Its configuration files are short and readable, so a site or proxy route can be defined in a few lines, with the same syntax covering both use cases.
- Is ferron free to use? What license does it have?
- ferron is open source under the MIT license. Check the license terms before using it in commercial products.
- Is ferron still maintained?
- Actively maintained. The last commit to ferron was on Oct 23, 2026.
- What can I use ferron for?
- Serving a static website with automatic HTTPS. Putting a reverse proxy in front of an internal API service. Debugging production requests by following traces into logs.
- How do I install ferron?
- Install Ferron on Linux with the official installer script (run it from the README; piped installer not reproduced here) Clone the repository from GitHub and switch to the develop-3.x branch: git clone https://github.com/ferronweb/ferron -b develop-3.x Initialize submodules and build the workspace: cd ferron && git submodule update --init --recursive && cargo build --workspace Run the server with your configuration file: cargo run -p ferron -- run -c ferron.conf
- Where can I get ferron?
- The source code and installation instructions are on GitHub: https://github.com/ferronweb/ferron
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
Caddy is an extensible web server written in Go that serves HTTP/1.1, HTTP/2 and HTTP/3 and enables HTTPS automatically by default.
A generic, extendable WebDAV server written in Python on top of WSGI, runnable standalone or embedded in other WSGI apps.
A C++11 single-header library for building HTTP/HTTPS servers and clients with blocking socket I/O.
Fast, unopinionated, minimalist web framework for Node.js for building web apps and HTTP APIs.
A Node.js framework for building REST APIs, using connect-style middleware to handle requests and responses.