Prezentare generală a produsului
Un singur server între rețea și aplicația ta.
Webship este un server web edge și static Rust auto-gazduit. Un singur runtime gestionează protocoale moderne, aplică politici edge, servește fișiere și face proxy pentru cererile aplicației.
Transport modern
Acceptă HTTP/1.1, HTTP/2 și HTTP/3, cu TLS 1.3 și un endpoint WebTransport opțional.
Livrare statică și prin proxy
Servește fișiere statice cu validatori și fișiere auxiliare pre-comprimate sau proxy a traficului aplicației prin pool-uri upstream limitate.
Setări implicite de securitate
Începe cu WAF, controale DDoS, provocare împotriva roboților, antete de securitate pentru răspuns, API Shield și protecție pentru fișierele dot activate.
Operațiuni observabile
Folosește statistici autentificate, metrici Prometheus, ID-uri de cerere, reîncărcări line și planul de control opțional MCP.
Pornire rapidă
De la binar de release la ascultător sănătos.
Pornește pe loopback, validează tot înainte de a lega, și verifică răspunsul de sănătate încorporat înainte de a adăuga traficul public.
Pregătiți fișierele
Plasați pe gazdă binarul de release, configurația sa TOML, root-ul static și orice fișiere TLS și chei configurate.
Validează și inspectează
Rulează ambele comenzi de configurare. Remediază prima eroare și inspectează rezultatul efectiv redactat înainte de pornire.
Începe privat
Porniți Webship cu fișierul TOML selectat. Adăugați o pereche completă de certificate sau TLS automat când site-ul este gata pentru trafic public securizat.
Verifică timpul de execuție
Apelează GET /health local. Apoi testează căile statice, TLS, rutele proxy, regulile de securitate și monitorizarea autentificată.
listen = "127.0.0.1:4433"
workers = 4
root = "./public"/usr/local/bin/webship --check-config --config /etc/webship/production.toml
/usr/local/bin/webship --print-effective-config --config /etc/webship/production.toml/usr/local/bin/webship --config /etc/webship/production.toml
curl --http3-only --insecure https://127.0.0.1:4433/healthGhid rapid de pornire pentru agenți AI
Conectați un agent AI la Webship în cinci linii.
Conectați Claude Code, OpenAI, DeepSeek sau orice client MCP compatibil printr-un tunel SSH privat. Agentul primește o suprafață de operațiuni autentificată fără a partaja ascultătorul public sau a expune credențialele de control traficului de internet.
{
"mcpServers": {
"webship": { "url": "https://localhost:19443/mcp",
"headers": { "Authorization": "Bearer <token>" } }
} }Livrare statică
Serviți un director cu setări implicite conștiente de protocol.
Setați un root la nivel global sau pentru fiecare site. Site-urile TLS implicite folosesc doar HTTP/3; site-urile necriptate folosesc implicit HTTP/1.1 și H2C. Suprascrieți HTTP/1.1, HTTP/2 și HTTP/3 în mod independent pentru fiecare site.
[[sites]]
domain = "app.example.com"
root = "/srv/app"
listen = "0.0.0.0:443"
[sites.protocols]
h1 = true
h2 = true
h3 = trueRouterul încorporat suportă GET și HEAD, intervale de octeți, cereri condiționale, validatori și anteturi .br, .zst și .gz. Căile către fișierele cu punct sunt refuzate implicit; .well-known rămâne disponibil.
Traficul aplicației
Direcționează cererile către unul sau mai mulți upstream-uri.
Activați proxy invers, potriviți un host și o cale, apoi definiți o politică finală necondiționată. Webship suportă pooluri limitate, verificări de sănătate, echilibrare a încărcării, întrerupătoare de circuit, încercări sigure fără corp, WebSockets și caching.
[reverse_proxy]
enabled = true
[[reverse_proxy.routes]]
domain = "app.example.com"
path_prefix = "/api"
strip_path_prefix = true
upstreams = ["127.0.0.1:8080", "127.0.0.1:8081"]
[[reverse_proxy.policies]]
name = "default"
hosts = []
path_prefixes = ["/"]
methods = []
max_body_bytes = 1048576
total_timeout_ms = 30000TLS și HTTP/3
Folosiți certificate manual sau lăsați Webship să le gestioneze.
Webship acceptă TLS 1.3. HTTP/3 rulează peste ascultătorul UDP corespunzător; activează HTTP/1.1 sau HTTP/2 explicit atunci când un site TLS are nevoie și de compatibilitate TCP.
listen = "0.0.0.0:443"
[automatic_tls]
enabled = true
directory_url = "https://acme-v02.api.letsencrypt.org/directory"
cache_dir = "/var/lib/webship/acme"
contacts = ["mailto:ops@example.com"]
accept_terms_of_service = true
[[sites]]
domain = "app.example.com"
root = "/srv/app"Politica la margine
Mențineți baza de securitate intactă.
Webship activează implicit principalele sale straturi de protecție. Ajustați limitele pentru sarcina de lucru și validați după fiecare modificare de regulă sau politică de antet.
[ddos]
enabled = true
mode = "normal"
requests_per_minute = 600
burst = 100
block_seconds = 300
[security.response_headers]
enabled = true
nosniff = true
frame_deny = true
referrer_no_referrer = true
hsts = "max-age=31536000; includeSubDomains"
content_security_policy = "default-src 'self'; frame-ancestors 'none'"Folosiți modul normal pentru trafic obișnuit, under_attack pentru gestionarea mai strictă a atacurilor active și lockdown când doar sondele și căile explicit permise trebuie să rămână disponibile.
Diagnosticare privată
Inspectează marginea fără a expune planul de control.
Statisticile și metricele Prometheus rulează pe un listener autentificat separat. Instrumentarea trebuie activată ori de câte ori unul dintre endpoint-uri este activ.
[observability]
instrumentation = true
stats = true
metrics = true
listen = "127.0.0.1:9090"
token = "replace-with-at-least-32-random-printable-ascii-characters"Operațiuni sigure
Reîncarcă deliberat. Menține revenirea aproape.
Reîncărcare configurație
Trimite SIGHUP după editarea unei configurații bazate pe fișiere. Webship validează înlocuirea înainte de instalare și păstrează configurația curentă când validarea eșuează.
Actualizare și revenire
Instalați noul binar lângă versiunea anterioară, validați configurația de producție cu acesta, apoi verificați sănătatea, TLS, proxy-ul și metricile. Păstrați binarul anterior până când toate verificările trec.
kill -HUP "$(pidof webship)"
/usr/local/bin/webship update --config /etc/webship/production.toml
sudo systemctl daemon-reload
sudo systemctl enable --now webship
sudo systemctl status webshipOptimizare ghidată de profil
Colectează profiluri native pentru țintă fără a confunda instruirea cu producția.
Fiecare țintă Webship 1.1 are un CLI instrumentat separat pentru colectarea datelor native LLVM de profil ale țintei sub traficul tău reprezentativ. Folosește exact aceeași versiune și triplet de țintă, parcurge rutele și protocoalele importante și oprește procesul în mod corespunzător pentru a putea scrie fiecare fișier .profraw.
Selectează ținta exactă
Descarcă CLI-ul de instruire PGO a cărui versiune de lansare și tripletul țintă Rust se potrivesc exact cu runtime-ul pe care intenționezi să-l optimizezi. Verifică mai întâi SHA-256-ul publicat.
Capturați traficul reprezentativ
Setați LLVM_PROFILE_FILE într-un director cu drept de scriere, porniți CLI-ul de instruire cu o copie validată a configurației reale, reredați traficul reprezentativ direct și prin proxy invers, apoi opriți Webship în mod grațios.
Fuzionați profilele brute
Utilizați llvm-profdata din generația de compilator înregistrată pentru versiune. Combină fiecare fișier .profraw emis într-un singur fișier sparse webship.profdata.
Reconstruiește și testează
Aplică profilul combinat doar la sursa exactă, compilatorul, furnizorul de criptografie, setul de funcționalități și ținta care l-au generat. Rulează teste de corectitudine și performanță înainte de promovare.
mkdir -p ./profiles
export LLVM_PROFILE_FILE="$PWD/profiles/webship-%p-%m.profraw"
./webship-pgo-training-1.1.0-<target> --config ./webship.tomlNew-Item -ItemType Directory -Force ./profiles
$env:LLVM_PROFILE_FILE = "$PWD/profiles/webship-%p-%m.profraw"
.\webship-pgo-training-1.1.0-<target>.exe --config .\webship.tomlllvm-profdata merge -sparse ./profiles/*.profraw -o ./webship.profdataReferință linie de comandă
Suprafață mică, pornire explicită.
webship [OPTIONS] | webship update [OPTIONS]
-c, --config CĂI- Selectează fișierul TOML. Dacă nu există, Webship îl creează cu o identitate TLS privată localhost.
--check-config- Validează configurația completă și ieși fără a porni ascultătorii.
--print-effective-config- Afișează configurația efectivă îmbinată cu secretele eliminate.
update- Verifică manifestul comunității semnat, selectează acest țintă exactă a platformei și instalează o versiune mai nouă dacă există.
--help / --version- Afișează ajutorul pentru comandă sau versiunea instalată Webship.
Moduri comune de eșec
Începeți cu configurarea, apoi mergeți către exterior.
- Rulați --check-config și corectați prima eroare raportată; câmpurile TOML necunoscute sunt respinse.
- Confirmați că porturile TCP și UDP configurate sunt disponibile și permise de firewall.
- Confirmați că certificatul și cheia există, pot fi citite de contul de serviciu și formează o pereche corespunzătoare.
- Pentru TLS automat, confirmați că fiecare domeniu configurat se rezolvă către gazda Webship.
- Apelați /health pe ascultătorul aplicației locale înainte de a testa prin DNS sau o cale de încărcare externă.
- Activați temporar observabilitatea autentificată atunci când sunt necesare dovezi de rulare.