مرور کلی محصول
یک سرور بین شبکه و برنامه شما.
Webship یک Rust خود میزبان در لبه و سرور وب استاتیک است. یک محیط اجرایی پروتکلهای مدرن را خاتمه میدهد، سیاست لبه را اعمال میکند، فایلها را سرو میکند و درخواستهای برنامه را پراکسی میکند.
انتقال مدرن
قبول کنید HTTP/1.1، HTTP/2 و HTTP/3، با TLS 1.3 و یک نقطهپایان اختیاری WebTransport.
تحویل ایستا و پروکسیشده
سرویسدهی فایلهای ایستا با اعتبارسنجیها و سرویسهای جانبی از پیش فشردهشده، یا عبور ترافیک برنامه از طریق گروههای بالادستی محدود.
پیشفرضهای ایمن
با WAF، کنترلهای DDoS، چالش بات، هدرهای امنیتی پاسخ، API Shield، و حفاظت از فایلهای نقطهای فعال شروع کنید.
عملیات قابل مشاهده
استفاده از آمار احراز هویتشده، معیارهای Prometheus، شناسههای درخواست، بارگذاری مجدد با ملایمت، و صفحه کنترل اختیاری MCP.
شروع سریع
از باینری نسخه منتشر شده تا شنونده سالم.
شروع روی لوپبک، اعتبارسنجی همه چیز قبل از اتصال، و بررسی پاسخ سلامت داخلی قبل از اضافه کردن ترافیک عمومی.
آمادهسازی فایلها
فایل باینری نسخه، فایل پیکربندی TOML آن، ریشه استاتیک و هر فایل گواهی و کلید TLS پیکربندی شده را روی میزبان قرار دهید.
اعتبارسنجی و بررسی
هر دو دستور پیکربندی را اجرا کنید. اولین خطا را برطرف کنید و نتیجه مؤثر حذفشده را قبل از راهاندازی بررسی کنید.
به صورت خصوصی راهاندازی کنید
Webship را با فایل TOML انتخاب شده راهاندازی کنید. یک جفت گواهی کامل یا TLS خودکار را اضافه کنید وقتی سایت آماده ترافیک عمومی امن است.
زمان اجرا را بررسی کنید
در محلی، درخواست GET /health را اجرا کنید. سپس مسیرهای ایستا، TLS، مسیرهای پروکسی، قوانین امنیتی و نظارت احراز هویت شده را آزمایش کنید.
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/healthراهنمای شروع سریع برای عاملهای هوش مصنوعی
اتصال یک عامل هوش مصنوعی به Webship در پنج خط.
اتصال به Claude Code، OpenAI، DeepSeek، یا هر کلاینت MCP سازگار از طریق تونل SSH خصوصی. عامل یک سطح عملیات احراز هویت شده را دریافت میکند بدون اینکه شنونده عمومی را به اشتراک بگذارد یا اطلاعات کنترل را در ترافیک اینترنت افشا کند.
{
"mcpServers": {
"webship": { "url": "https://localhost:19443/mcp",
"headers": { "Authorization": "Bearer <token>" } }
} }تحویل ایستا
یک دایرکتوری را با تنظیمات پیشفرض آگاه به پروتکل سرو کنید.
یک ریشه بهصورت جهانی یا برای هر سایت تنظیم کنید. سایتهای TLS بهطور پیشفرض فقط HTTP/3 را دارند؛ سایتهای بدون رمز بهصورت پیشفرض HTTP/1.1 و H2C دارند. برای هر سایت بهطور مستقل HTTP/1.1، HTTP/2 و HTTP/3 را بازنویسی کنید.
[[sites]]
domain = "app.example.com"
root = "/srv/app"
listen = "0.0.0.0:443"
[sites.protocols]
h1 = true
h2 = true
h3 = trueروتر داخلی از GET و HEAD، محدودههای بایت، درخواستهای شرطی، اعتبارسنجها و فایلهای جانبی .br، .zst و .gz پشتیبانی میکند. مسیرهای فایل نقطهای بهطور پیشفرض رد میشوند؛ مسیر .well-known همچنان در دسترس باقی میماند.
ترافیک برنامه
هدایت درخواستها به یک یا چند منبع بالادستی.
فعالسازی پروکسی معکوس، هماهنگی یک میزبان و مسیر، و سپس تعریف یک سیاست نهایی بدون شرط. Webship از استخرهای محدود، بررسی سلامت، متعادلسازی بار، مدار شکنها، تلاشهای ایمن بدون بدنه، وبسوکتها و کشینگ پشتیبانی میکند.
[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 و HTTP/3
از گواهیهای دستی استفاده کنید یا بگذارید Webship آنها را مدیریت کند.
Webship TLS 1.3 را میپذیرد. HTTP/3 روی شنونده UDP مطابقتی اجرا میشود؛ هنگام نیاز یک سایت TLS به سازگاری TCP، HTTP/1.1 یا HTTP/2 را به طور صریح فعال کنید.
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"سیاست لبه
پایه امن را دستنخورده نگه دارید.
Webship به طور پیشفرض لایههای حفاظتی اصلی خود را فعال میکند. محدودیتها را برای بار کاری خود تنظیم کنید و پس از هر تغییر در قانون یا سیاست هدر، اعتبارسنجی را انجام دهید.
[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'"برای ترافیک معمولی از حالت عادی استفاده کنید، برای مدیریت حملات فعال سختگیرانه از حالت under_attack استفاده کنید و وقتی تنها پروبها و مسیرهای بهصراحت مجاز باید در دسترس باشند از حالت lockdown استفاده کنید.
تشخیصهای خصوصی
لبه را بررسی کنید بدون اینکه صفحه کنترل را افشا کنید.
آمارها و متریکهای Prometheus بر روی یک شنونده احراز هویتشده مجزا اجرا میشوند. ابزارسنجی باید هر زمان که هر یکی از نقاط پایانی فعال باشد، فعال شود.
[observability]
instrumentation = true
stats = true
metrics = true
listen = "127.0.0.1:9090"
token = "replace-with-at-least-32-random-printable-ascii-characters"عملیات ایمن
دوباره بارگذاری کنید با قصد. بازگردانی را نزدیک نگه دارید.
بارگذاری مجدد پیکربندی
بعد از ویرایش یک پیکربندی مبتنی بر فایل، SIGHUP ارسال کنید. Webship جایگزینی را قبل از نصب اعتبارسنجی میکند و در صورت شکست اعتبارسنجی، پیکربندی در حال اجرا را حفظ میکند.
بهروزرسانی و بازگردانی
نسخهی جدید باینری را کنار نسخه قبلی نصب کنید، پیکربندی تولید را با آن بررسی کنید، سپس سلامتی، TLS، پروکسی و معیارها را تأیید کنید. تا زمانی که همهی دروازهها رد شوند، باینری قبلی را نگه دارید.
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 webshipبهینهسازی هدایتشده توسط پروفایل
پروفایلهای بومی هدف را بدون اشتباه گرفتن آموزش و تولید جمعآوری کنید.
هر هدف Webship 1.1 دارای یک رابط خط فرمان ابزارشده جداگانه برای جمعآوری دادههای پروفایل LLVM بومی هدف تحت ترافیک نماینده شما است. از نسخه و سهگانه هدف دقیق استفاده کنید، مسیرها و پروتکلهای مهم را اجرا کنید و فرآیند را بهطور مناسب متوقف کنید تا بتواند هر فایل .profraw را خالی کند.
هدف دقیق را انتخاب کنید
CLI آموزش PGO را دانلود کنید که نسخه انتشار آن و سهگانه هدف Rust دقیقاً با زمان اجرای مورد نظر شما برای بهینهسازی مطابقت دارد. ابتدا SHA-256 منتشر شده آن را تأیید کنید.
ثبت ترافیک نماینده
LLVM_PROFILE_FILE را به یک دایرکتوری قابل نوشتن تنظیم کنید، رابط خط فرمان آموزشی را با یک نسخه تأییدشده از پیکربندی واقعی شروع کنید، ترافیک مستقیم و پروکسی معکوس نماینده را پخش کنید، سپس Webship را بهطور مناسب متوقف کنید.
ادغام پروفایلهای خام
استفاده از llvm-profdata از تولید کامپایلر که برای نسخه منتشر شده ضبط شده است. هر فایل .profraw تولید شده را در یک فایل sparse به نام webship.profdata ادغام کنید.
بازسازی و انجام گیت
پروفایل ادغام شده را فقط روی سورس، کامپایلر، ارائهدهنده کریپتو، مجموعه ویژگی و هدفی که آن را تولید کرده اعمال کنید. پیش از ترفیع، دروازههای صحت و عملکرد را اجرا کنید.
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.profdataمرجع خط فرمان
سطح کوچک، راهاندازی صریح.
webship [OPTIONS] | webship update [OPTIONS]
-c، --config PATH- فایل TOML را انتخاب کنید. اگر وجود نداشت، Webship آن را با یک هویت TLS خصوصی لوکالهاست ایجاد میکند.
--check-config- پیکربندی کامل را اعتبارسنجی کرده و بدون شروع شنوندهها خارج شوید.
--print-effective-config- پیکربندی نهایی ادغام شده را با حذف اسرار چاپ کنید.
به روز رسانی کنید- مانیفست امضا شده جامعه را تأیید کنید، این هدف دقیق پلتفرم را انتخاب کنید و در صورت وجود نسخه جدیدتر، آن را نصب کنید.
--help / --نسخه- راهنمای دستور یا نسخه نصب شده Webship را چاپ کنید.
حالات معمول خطا
با پیکربندی شروع کنید، سپس به بیرون حرکت کنید.
- --check-config را اجرا کنید و اولین خطای گزارش شده را اصلاح کنید؛ فیلدهای ناشناخته TOML رد میشوند.
- تأیید کنید که پورتهای TCP و UDP پیکربندیشده در دسترس بوده و توسط دیوار آتش مجاز هستند.
- اطمینان حاصل کنید که گواهینامه و کلید وجود دارند، قابل خواندن توسط حساب سرویس هستند و یک جفت مطابقت دارند.
- برای TLS خودکار، اطمینان حاصل کنید که هر دامنه پیکربندی شده به میزبان Webship حل میشود.
- قبل از تست از طریق DNS یا مسیر بارگذاری خارجی، /health را روی شنونده برنامه محلی فراخوانی کنید.
- فعالسازی موقت قابلیت مشاهدهی معتبر زمانی که شواهد زمان اجرا مورد نیاز است.