Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

Welcome to Sentinel, a high-performance reverse proxy platform built on Cloudflare’s Pingora framework. Sentinel extends Pingora’s robust foundation with enterprise-grade features designed for modern web infrastructure.

What is Sentinel?

Sentinel is a next-generation reverse proxy that combines the performance and reliability of Pingora with advanced routing capabilities, service-type awareness, and comprehensive error handling. Whether you’re serving static files, proxying REST APIs, or managing complex web applications, Sentinel provides the tools and flexibility you need for production deployments.

Key Features

High Performance

  • Built on Pingora’s async Rust foundation
  • Memory-safe architecture with zero-copy operations
  • Efficient connection pooling and keep-alive management
  • Optimized for both throughput and latency

Service-Type Awareness

Sentinel understands different service types and optimizes behavior accordingly:

  • Web Applications: HTML error pages, session handling, SPA support
  • REST APIs: JSON schema validation, structured error responses, OpenAPI integration
  • Static Files: Direct file serving, automatic MIME types, caching headers

Advanced Routing

  • Flexible path-based and host-based routing
  • Route priorities and groups
  • Path variables and pattern matching
  • Per-route configuration overrides

Comprehensive Error Handling

  • Service-type-specific error formats (HTML, JSON, XML, Text)
  • Custom error page templates with variable substitution
  • Graceful fallbacks for connection failures
  • Detailed error tracking with request IDs

Observability

  • Structured logging with configurable levels
  • Prometheus-compatible metrics
  • Distributed tracing support
  • Health check endpoints

Security Features

  • Path traversal protection for static files
  • Request validation and sanitization
  • Rate limiting capabilities
  • TLS/SSL with modern cipher suites
  • HTTP/3 preparation with QUIC support (ready for activation)

Configuration

  • Human-friendly KDL configuration format
  • Hot reload without downtime
  • Environment variable substitution
  • Comprehensive validation on startup

Why Sentinel?

Production-Ready

Sentinel is designed for production use from the ground up. Every feature is implemented with reliability, performance, and operational excellence in mind.

Type-Safe and Memory-Safe

Written in Rust, Sentinel eliminates entire classes of bugs common in traditional proxies, including buffer overflows, use-after-free errors, and data races.

Cloud-Native

Built for modern cloud environments with support for:

  • Container deployments (Docker, Kubernetes)
  • Horizontal scaling
  • Service mesh integration
  • Dynamic configuration

Developer-Friendly

  • Clear, expressive configuration
  • Comprehensive error messages
  • Extensive documentation
  • Example configurations for common use cases

Use Cases

Sentinel excels in various deployment scenarios:

  • API Gateway: Validate requests, transform responses, implement rate limiting
  • Static Content Delivery: Serve files directly with optimal caching headers
  • Load Balancer: Distribute traffic across multiple upstream servers
  • Web Application Proxy: Handle sessions, provide custom error pages, support SPAs
  • Microservices Router: Route requests to different services based on paths
  • Edge Proxy: Terminate SSL, implement security policies, cache responses

Architecture Highlights

Sentinel leverages Pingora’s battle-tested architecture while adding its own innovations:

Client Request
     ↓
[TLS Termination]
     ↓
[Route Matching] ← Service Type Detection
     ↓
[Request Processing]
     ├─→ Static File Serving (no upstream)
     ├─→ API Validation → Upstream
     └─→ Web App Processing → Upstream
     ↓
[Response Processing]
     ├─→ Error Page Generation
     ├─→ Header Manipulation
     └─→ Caching Headers
     ↓
Client Response

Getting Started

This documentation will guide you through:

  1. Installation - Get Sentinel up and running
  2. Quick Start - Your first proxy configuration
  3. Core Concepts - Understand how Sentinel works
  4. Configuration - Master the configuration system
  5. Service Types - Leverage service-specific features
  6. Deployment - Deploy to production

Documentation Structure

  • Getting Started: Installation and basic setup
  • Core Concepts: Fundamental architecture and design principles
  • Configuration: Detailed configuration reference
  • Service Types: Service-specific features and optimizations
  • Features: Advanced capabilities and integrations
  • Operations: Production deployment and management
  • Examples: Real-world configuration examples
  • Reference: API documentation and specifications

Community and Support

Version Information

This documentation covers Sentinel version 0.1.0 and later. For the latest updates and changes, see the Changelog.

License

Sentinel is open-source software licensed under the Apache License, Version 2.0. See the License page for details.


Ready to get started? Head to the Installation Guide to begin your journey with Sentinel!

Installation

Quick Start

Basic Configuration

First Route

Architecture Overview

Pingora Foundation

Request Flow

Component Design

Routing System

Route Matching

Priority Rules

Path Variables

Configuration Overview

KDL Configuration Format

Server Configuration

Listeners

TLS Settings

Performance Tuning

Routes Configuration

Basic Routes

Advanced Routing

Route Groups

Upstream Configuration

Load Balancing

Health Checks

Connection Pools

Service Types Overview

Web Applications

HTML Error Pages

Session Handling

SPA Support

REST APIs

JSON Validation

Schema Management

Error Responses

OpenAPI Integration

Static Files

File Serving

Caching Headers

Directory Listing

Security Features

Error Handling

Custom Error Pages

Error Templates

Format Negotiation

Request/Response Processing

Headers Manipulation

Request Rewriting

Response Filtering

Observability

Logging

Metrics

Tracing

Security

Rate Limiting

Authentication

Authorization

CORS

HTTP/3 Support

QUIC Protocol

0-RTT Configuration

Migration Guide

Performance Optimization

Caching Strategies

Connection Management

Memory Usage

High Availability

Failover

Circuit Breakers

Retry Policies

Custom Extensions

Writing Middleware

Custom Handlers

Plugin System

Deployment Overview

Docker Deployment

Building Images

Docker Compose

Kubernetes

Systemd Service

Configuration Management

Rolling Updates

Monitoring Setup

Health Checks

Backup & Recovery

Troubleshooting

Common Issues

Debug Mode

Performance Issues

Migration Guide

From Nginx

From HAProxy

From Traefik

Configuration Schema

Environment Variables

Command Line Options

Error Codes

Metrics Reference

Example Configurations

Simple Proxy

Load Balancer

API Gateway

Static Site

Mixed Services

Integration Examples

With Prometheus

With Grafana

With Jaeger

Building from Source

Development Setup

Testing

Unit Tests

Integration Tests

Load Testing

Contributing

Code Style

Pull Request Process

Release Process

Glossary

FAQ

Changelog

License