Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 37 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,41 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.4.0] - 2026-05-25

### Added

- **TLS termination** — HTTPS on the frontend with SNI-based multi-domain support
- `tls` directive in config: `tls /path/to/cert.pem /path/to/key.pem`
- SNI-based certificate resolution via `rustls` + `tokio-rustls`
- HTTP to HTTPS redirect: `redirect_port = tls_port - 443 + 80`
- `X-Forwarded-Proto: https` header set for TLS connections
- Auto-detect mode (`start_all()`) starts HTTPS listeners + redirect servers
- **Structured access log** — every request logged with method, path, host, status, duration, bytes sent
- Auto-generated `X-Request-ID` (UUID v4) for each request
- Feature flag `logging` (enabled by default)
- **Docker support**
- Multi-stage `Dockerfile`: Rust Alpine build to Alpine runtime (~22 MB)
- `docker-compose.yml` with TLS + echo backends
- GitHub Actions workflow for publishing to GHCR (multi-arch amd64/arm64)
- Docker build step in CI to catch Dockerfile regressions
- **Security audit** in CI: `cargo deny check` + `cargo audit --deny warnings`
- **Benchmarks** in `BENCHMARKS.md` comparing tiny-proxy vs nginx vs Caddy
- `--addr` CLI argument is now optional — auto-detects listeners from config
- `start_all()` method — auto-detect HTTP/TLS listeners per site address
- `find_site()` with port normalization — browsers omit port 443/80 in Host header

### Changed

- `--addr` / `-a` changed from `String` to `Option<String>`
- `cargo deny` and `cargo audit` added to CI pipeline
- Release workflow updated for GHCR instead of Docker Hub

### Fixed

- Duplicate site addresses now rejected at parse time instead of silent HashMap overwrite
- Mixed TLS and non-TLS sites on the same address rejected at parse time

## [0.3.0] - 2026-04-27

### Added
Expand Down Expand Up @@ -118,6 +153,7 @@ localhost:8080 {
- GitHub Release creation
- Example programs for library usage

[0.4.0]: https://github.com/denislituev/tiny-proxy/releases/tag/v0.4.0
[0.3.0]: https://github.com/denislituev/tiny-proxy/releases/tag/v0.3.0
[0.2.0]: https://github.com/denislituev/tiny-proxy/releases/tag/v0.2.0
[0.1.0]: https://github.com/denislituev/tiny-proxy/releases/tag/v0.1.0
[0.1.0]: https://github.com/denislituev/tiny-proxy/releases/tag/v0.1.0
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "tiny-proxy"
version = "0.3.0"
version = "0.4.0"
edition = "2021"
description = "A high-performance HTTP reverse proxy server written in Rust with SSE support, connection pooling, and configurable routing"
license = "MIT OR Apache-2.0"
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ Add to your `Cargo.toml`:

```toml
[dependencies]
tiny-proxy = "0.3"
tiny-proxy = "0.4"
```

## Docker
Expand Down Expand Up @@ -461,19 +461,19 @@ Use placeholders in header values:
```toml
# Minimal - core proxy only (for embedding in other applications)
[dependencies]
tiny-proxy = { version = "0.3", default-features = false }
tiny-proxy = { version = "0.4", default-features = false }

# With HTTPS backend support
[dependencies]
tiny-proxy = { version = "0.3", default-features = false, features = ["tls"] }
tiny-proxy = { version = "0.4", default-features = false, features = ["tls"] }

# With management API
[dependencies]
tiny-proxy = { version = "0.3", default-features = false, features = ["tls", "api"] }
tiny-proxy = { version = "0.4", default-features = false, features = ["tls", "api"] }

# Full standalone (same as default)
[dependencies]
tiny-proxy = "0.3"
tiny-proxy = "0.4"
```

#### `cli` (default)
Expand Down
Loading