lilydocs
HTTP APIWebSocketConsumer
Çalıştırma2 dk okuma

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:

Rust
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:

TLS başlangıcı
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.

HIZLI BAŞLANGIÇ
Dokümantasyon
Kaynak kod