#http-proxy #intercept #proxy

app fbi-proxy

A fast and flexible proxy server for intercepting and modifying HTTP/HTTPS requests

9 releases (stable)

Uses new Rust 2024

1.7.0 Sep 16, 2025
1.6.2 Sep 15, 2025
1.5.0 Aug 10, 2025
1.4.0 Jul 30, 2025
0.1.1 Jul 29, 2025

#1787 in Network programming

35 downloads per month

MIT license

115KB
609 lines

fbi-proxy

FBI-Proxy provides easy HTTPS access to your local services with intelligent domain routing.

Features

Current Features ✅

  • Intelligent Domain Routing: Multiple routing patterns for flexible service access
    • Port-based routing (e.g., 3000.fbi.comlocalhost:3000)
    • Host--Port routing (e.g., api--3001.fbi.comapi:3001)
    • Subdomain routing with Host headers (e.g., admin.app.fbi.comapp:80)
    • Direct host forwarding (e.g., myserver.fbi.commyserver:80)
  • WebSocket Support: Full WebSocket connection support for all routing patterns
  • High Performance: Built with Rust for optimal performance and low resource usage
  • Easy Setup: Simple one-command installation and startup
  • Docker Support: Available as a Docker image for containerized deployments
  • Flexible Configuration: Environment variables and CLI options for customization
  • Cross-Platform: Works on macOS, Linux, and Windows
  • Integration Ready: Compatible with reverse proxies like Caddy for HTTPS

Roadmap

Next Up 🚧

  • Configuration File Support - YAML/JSON config for persistent routing rules
  • Access Control - Domain filtering, host/port whitelisting
  • Request Logging - Basic access logs for debugging
  • Health Checks - Simple upstream service availability monitoring

Future Improvements 🔮

  • Load Balancing - Round-robin between multiple upstream targets
  • Metrics - Basic statistics (requests, response times, errors)
  • Hot Reload - Update configuration without restart
  • Custom Headers - Add/modify headers for specific routes

Routing Examples

# Port forwarding
https://3000.fbi.com        → localhost:3000
https://8080.fbi.com        → localhost:8080

# Host--Port forwarding
https://api--3001.fbi.com   → api:3001
https://db--5432.fbi.com    → db:5432

# Subdomain routing (with Host header)
https://admin.app.fbi.com   → app:80 (Host: admin)
https://v2.api.fbi.com      → api:80 (Host: v2)

# Direct host forwarding
https://myserver.fbi.com    → myserver:80

WebSocket connections are supported for all patterns.

Usage

# launch
bunx fbi-proxy

# expose to LAN
bunx fbi-proxy --host 0.0.0.0 --port=2432

# run with docker
docker run --rm --name fbi-proxy --network=host snomiao/fbi-proxy

Using with Caddy (Optional)

FBI-Proxy focuses on the core proxy functionality. For HTTPS and advanced routing, you can use Caddy as a reverse proxy:

Install Caddy

# macOS
brew install caddy

# Ubuntu/Debian
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

# Or download from https://caddyserver.com/download

Caddyfile Example

Create a Caddyfile to route *.fbi.com to FBI-Proxy:

*.fbi.com {
    reverse_proxy localhost:2432
    tls internal
}

Run Both Services

# Terminal 1: Start FBI-Proxy
bunx fbi-proxy

# Terminal 2: Start Caddy
caddy run --config Caddyfile

Now you can access your services via HTTPS at https://*.fbi.com!

Development

# Install dependencies
bun install

# Start development
bun run dev

# Or production
bun run build && bun run start

Prerequisites

Configuration

Environment Variables

FBI-Proxy supports the following environment variables for configuration:

Variable Description Default
FBI_PROXY_PORT Port for the proxy server to listen on 2432
FBI_PROXY_HOST Host/IP address to bind to 127.0.0.1
RUST_LOG Log level for the Rust proxy (error, warn, info, debug, trace) info
FBIPROXY_PORT Internal proxy port (auto-assigned) Auto

Command-line arguments take precedence over environment variables.

CLI Options

  • Default domain: fbi.com (change with --fbihost)
  • Host binding: --host or FBI_PROXY_HOST env var
  • Port binding: --port or FBI_PROXY_PORT env var

License

MIT License - see LICENSE file for details

Dependencies

~9–22MB
~249K SLoC