vey-proxy v1.15.1
This is a new feature development version in 1.15.x.
v1.15.1 includes the v1.15.0 changes. v1.15.0 was not published as its own GitHub release.
Container images: ghcr.io/vey-oss/vey-proxy:1.15.1 (Debian, default), ghcr.io/vey-oss/vey-proxy:1.15.1-debian, and ghcr.io/vey-oss/vey-proxy:1.15.1-alpine. Each tag is a manifest list for linux/amd64 and linux/arm64. The image listens with HTTP on 8080 and SOCKS5 on 1080. Alpine uses mimalloc.
MSRV 1.95.0.
Full history: vey-proxy/CHANGELOG.
v1.15.1
Bug fixes
- A transparent UDP listener forwards to the original destination instead of the listen address.
- UDP replies from a transparent or unspecified listener use the received destination as the source IP.
Features
H2Forwardfailure logs includereason.UdpConnectcreation logs includeudp_listen_addr,udp_client_addr, andupstream.- Site
http.h2.force_upstreamkeeps anhttp_guardHTTP/2 task on origin HTTP/2 (ALPNh2only, or h2c for a plaintext origin). - Published Debian and Alpine images (linux/amd64 and linux/arm64) listen with HTTP on
8080and SOCKS5 on1080. Alpine uses mimalloc. - Deb, rpm, and container image builds accept an optional Rust PGO profile.
Optimization
- eBPF UDP connection tracking uses one shared LRU instead of a per-CPU LRU.
Compatibility
- Classic mode appends
X-Forwarded-Byfor this hop. Previously only standardForwardedsetby. - An
http_guardHTTP/2 stream takes the request host from:authorityand is rejected when that host is missing. - A plaintext
http_guardorigin uses HTTP/1.1 unlesshttp.h2.force_upstreamis set. - TLCP interception built with Tongsuo 8.5.0 uses the upstream sign certificate and encryption certificate separately.
- macOS stays in the foreground after libc removed
daemon().
v1.15.0
Bug fixes
- HTTP/1 response headers that start arriving while the request body is still being sent honor the response-header timeout.
- An idle HTTP connection and an adaptation send honor the escaper expiry.
- A route escaper remembers the upstream it chose, so the next request can reuse that connection.
- ICAP RESPMOD accepts an
Encapsulatedvalue that starts withreq-hdr. A preview 206 is reported asICAP-RESPMOD-206. Adapted HTTP/2 messages drop connection-specific headers. - An ICAP OPTIONS response consumes its
opt-body, so the connection can be reused. - Fluentd
retry_queue_lenis read from YAML. - QUIC Initial packets with a Source Connection ID longer than 20 bytes are rejected.
server.forbidden.invalid_paramincrements its own counter instead ofuser_blocked.- Transfer-Encoding is strictly checked. Request compress transfer codings are rejected (501), and
TEis parsed then reduced totrailers. - SMTP interception answers out-of-sequence commands locally without forwarding them upstream.
- IMAP interception matches CAPABILITY names and greeting response codes case-insensitively.
- IMAP interception logs use
ImapConnectioninstead ofSmtpConnection. - Password hash verify always clears the thread-local buffer, so an OpenSSL error cannot poison later checks.
- SOCKS5 UDP ASSOCIATE batch receive applies destination ACL to every datagram, so a later forbidden target is rejected.
- IMAP interception enters the authenticated state after a successful LOGIN, so SELECT/FETCH are forwarded instead of rejected as BAD.
- LDAP and Python password auth apply local
expire_datetimeandblock_and_delaylike Basic.
Features
- Add
site_groupfor reverse-proxy Host/SNI lookup, per-site origin, and tenant limits. - Add
http_guard, a public-edge HTTP reverse proxy. - Add
tls_proxy, a TLS reverse proxy. - HTTP/H2 forward and intercept logs record decoded body sizes.
- Locally generated HTTP error responses include RFC 9209
Proxy-Status. - snmalloc builds export allocator memory stats.
Compatibility
http_exposeis renamed fromhttp_rproxy(http_rproxyis still accepted). Origins move tosite_group. Ingress TLS uses OpenSSL instead of Rustls.http_exposehttp_forward_upstream_keepalivemoved to sitehttp.h1.upstream_keepalive.append_forwarded_formoved to sitehttp.forwarded_header_type.- HTTP
Keep-Aliveis parsed astimeout/max. Upstream reuse honors those limits (max=0is not reused). - HTTP
Connectionis parsed as a token list. Keep-alive follows the HTTP version and the merged tokens (HTTP/1.0 defaults to close;TEwithContent-Lengthstill forces close). task_idle_max_countis the minimum of the user, tenant, and origin site.- Bump MSRV to 1.95.0.