TLS, proxy ve limitler
HTTP protokolünü, güvenilir proxy ağlarını ve request/response sınırlarını yapılandırın.
HttpTransportConfig, HTTP bağlantı ve veri sınırlarını birlikte tanımlar. Geçersiz sınırlar uygulama build sırasında reddedilir.
Transport override#
Bu parça başlangıç fonksiyonunuzdaki builder’ı oluşturur:
use std::time::Duration;
use lilyrs::http_api::{AppBuilder, HttpTransportConfig};
let transport = HttpTransportConfig {
max_in_flight_requests: 500,
max_request_body_bytes: 2 * 1024 * 1024,
max_multipart_part_bytes: 1024 * 1024,
request_timeout: Duration::from_secs(30),
trusted_proxy_cidrs: vec!["10.10.0.0/16".parse()?],
..Default::default()
};
let builder = AppBuilder::new("127.0.0.1:8080").transport_config(transport);Body sınırını düşürdüğünüzde multipart part sınırını da onun içinde tutun. CIDR değerini gerçek proxy ağınızla değiştirin. max_request_body_bytes ve trusted_proxy_cidrs gibi alanlar mevcut TOML ServerConfig şemasında yer almaz; burada gösterilen DTO ile verilir.
Protokol ve TLS#
HttpProtocol::Auto, Http1_1 ve Http2 seçenekleri bulunur. TLS’de ALPN kullanılır. RustlsConfig::from_pem_file veya hazır TLS config’i AppBuilder::rustls_config ile bağlanabilir. Yerel plaintext için açık tls_disabled() seçin.
Aşağıdaki async başlangıç parçasında sertifika ve key dosyaları gerçek deployment dosyalarınız olmalıdır:
let tls = lilyrs::http_api::RustlsConfig::from_pem_file(
"./certs/fullchain.pem",
"./certs/private-key.pem",
).await?;
lilyrs::http_api::AppBuilder::new("0.0.0.0:8443")
.rustls_config(tls)
.protocol(lilyrs::http_api::HttpProtocol::Auto)
.build().await?
.start().await?;Reverse proxy’nin TLS termination’ı ile Lily listener’ının TLS ayarı ayrı tercihlerdir. Client CA ile yapılandırma helper’ı da desteklenir.
Proxy ve client IP#
Default trusted proxy listesi boştur. Yalnız doğrudan peer güvenilir CIDR içindeyse sınırlandırılmış X-Forwarded-For zincirinden effective IP çözülür. İstemcinin gönderdiği forwarding header’ı doğrudan gerçek kimlik kabul etmeyin.
ClientIp extractor’ı transport’un bu sonucunu kullanır. Authentication için forwarded kimlik header’ları doğrulanmış Principal yerine geçmez.
Varsayılan sınırlar#
| Kontrol | Default |
|---|---|
| Connections / in-flight requests | 10.000 / 10.000 |
| Request body / buffered response | 16 MiB / 16 MiB |
| Multipart part / count / metadata | 8 MiB / 128 / 16 KiB |
| Response stream item | 64 KiB |
| Stream total byte limit | None; deadline ve chunk sınırları sürer |
| Request headers / response headers | 64 alan ve 64 KiB, ayrı ayrı |
| URI | 8 KiB |
| Request timeout | 60 saniye |
| Connection idle / header-read/TLS-handshake | 120 / 10 saniye |
| HTTP/2 concurrent streams | Connection başına 100 |
| Trusted proxy CIDR’ları | Boş |
| Lifecycle shutdown budget | 30 saniye |
Değerler HttpTransportConfig::default ve lifecycle default’larıdır; config ve builder override edebilir. HTTP/2 window/frame/send-buffer/reset/keepalive alanları da aynı transport referansında bulunur.
Kapasite ve kota#
Admission kapasitesi aşılması 503 üretir. Bu, kullanıcıya zaman başına kota uygulayan rate limiting ile aynı politika değildir. Request timeout, body okuma ve lazy response üretimini de kapsar.
Bu sayfanın kaynakları v0.1.0
Anlatım, incelenen framework commit’ine dayanır.