Tổng quan sản phẩm
Một máy chủ giữa mạng và ứng dụng của bạn.
Webship là một máy chủ web tĩnh và biên Rust tự lưu trữ. Một runtime xử lý các giao thức hiện đại, áp dụng chính sách biên, phục vụ các tệp và proxy các yêu cầu ứng dụng.
Giao thông hiện đại
Chấp nhận HTTP/1.1, HTTP/2, và HTTP/3, với TLS 1.3 và một điểm cuối WebTransport tùy chọn.
Phân phối tĩnh và qua proxy
Phục vụ các tệp tĩnh với các bộ xác thực và tệp nén phụ, hoặc chuyển tiếp lưu lượng ứng dụng qua các nhóm nguồn giới hạn.
Mặc định an toàn
Bắt đầu với WAF, kiểm soát DDoS, thách thức bot, tiêu đề bảo mật phản hồi, API Shield, và bảo vệ tập tin chấm được bật.
Hoạt động có thể quan sát
Sử dụng thống kê đã xác thực, số liệu Prometheus, ID yêu cầu, tải lại mượt mà, và bảng điều khiển MCP tùy chọn.
Bắt đầu nhanh
Từ nhị phân phát hành đến bộ lắng nghe khỏe mạnh.
Bắt đầu trên loopback, xác thực mọi thứ trước khi liên kết, và kiểm tra phản hồi sức khỏe tích hợp trước khi thêm lưu lượng công khai.
Chuẩn bị các tệp
Đặt tệp nhị phân release, cấu hình TOML của nó, root tĩnh, và bất kỳ tệp chứng chỉ và khóa TLS nào đã được cấu hình lên máy chủ.
Xác thực và kiểm tra
Chạy cả hai lệnh cấu hình. Sửa lỗi đầu tiên và kiểm tra kết quả hiệu quả đã được biên tập trước khi khởi động.
Bắt đầu riêng tư
Khởi động Webship với tệp TOML đã chọn. Thêm một cặp chứng chỉ đầy đủ hoặc TLS tự động khi site sẵn sàng cho lưu lượng công khai bảo mật.
Xác minh runtime
Gọi GET /health cục bộ. Sau đó kiểm tra các đường dẫn tĩnh, TLS, các tuyến proxy, quy tắc bảo mật và giám sát có xác thực.
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/healthHướng dẫn Bắt đầu Nhanh cho các Đại lý AI
Kết nối một tác nhân AI với Webship trong năm dòng.
Kết nối Claude Code, OpenAI, DeepSeek, hoặc bất kỳ client MCP tương thích nào thông qua một kênh SSH riêng. Đại lý nhận được bề mặt hoạt động đã xác thực mà không cần chia sẻ bộ nghe công khai hoặc tiết lộ thông tin đăng nhập điều khiển cho lưu lượng internet.
{
"mcpServers": {
"webship": { "url": "https://localhost:19443/mcp",
"headers": { "Authorization": "Bearer <token>" } }
} }Phân phối tĩnh
Phục vụ một thư mục với các mặc định nhận biết giao thức.
Đặt một root toàn cục hoặc theo từng site. Các site TLS mặc định chỉ sử dụng HTTP/3; các site cleartext mặc định sử dụng HTTP/1.1 và H2C. Ghi đè HTTP/1.1, HTTP/2, và HTTP/3 một cách độc lập cho từng site.
[[sites]]
domain = "app.example.com"
root = "/srv/app"
listen = "0.0.0.0:443"
[sites.protocols]
h1 = true
h2 = true
h3 = trueBộ định tuyến tích hợp hỗ trợ GET và HEAD, phạm vi byte, yêu cầu có điều kiện, bộ xác thực, và các sidecar .br, .zst, và .gz. Đường dẫn tệp bắt đầu bằng dấu chấm mặc định bị từ chối; .well-known vẫn có sẵn.
Lưu lượng ứng dụng
Định tuyến các yêu cầu đến một hoặc nhiều upstream.
Kích hoạt reverse proxy, khớp một host và path, sau đó định nghĩa một chính sách không điều kiện cuối cùng. Webship hỗ trợ các pool giới hạn, kiểm tra sức khỏe, cân bằng tải, ngắt mạch, thử lại an toàn không có body, WebSocket và lưu trữ đệm.
[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 và HTTP/3
Sử dụng chứng chỉ thủ công hoặc để Webship quản lý chúng.
Webship chấp nhận TLS 1.3. HTTP/3 chạy trên trình nghe UDP tương ứng; bật HTTP/1.1 hoặc HTTP/2 rõ ràng khi một trang TLS cũng cần tương thích 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"Chính sách biên
Giữ nguyên cơ sở bảo mật.
Webship mặc định kích hoạt các lớp bảo vệ chính của nó. Điều chỉnh giới hạn cho khối lượng công việc của bạn và xác thực sau mỗi thay đổi về quy tắc hoặc chính sách tiêu đề.
[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'"Sử dụng chế độ bình thường cho lưu lượng thông thường, under_attack cho xử lý tấn công chủ động nghiêm ngặt hơn, và lockdown khi chỉ cho phép các probe và đường dẫn được phép rõ ràng có thể truy cập.
Chẩn đoán riêng tư
Kiểm tra edge mà không làm lộ plane điều khiển.
Thống kê và chỉ số Prometheus chạy trên một trình lắng nghe xác thực riêng. Thiết bị đo lường phải được bật bất cứ khi nào một trong hai điểm cuối hoạt động.
[observability]
instrumentation = true
stats = true
metrics = true
listen = "127.0.0.1:9090"
token = "replace-with-at-least-32-random-printable-ascii-characters"Hoạt động an toàn
Tải lại có chủ đích. Giữ phục hồi gần kề.
Tải lại cấu hình
Gửi SIGHUP sau khi chỉnh sửa cấu hình dựa trên tệp. Webship xác thực bản thay thế trước khi cài đặt và giữ lại cấu hình đang chạy khi xác thực thất bại.
Nâng cấp và khôi phục
Cài đặt nhị phân mới bên cạnh phiên bản trước, xác thực cấu hình sản xuất với nó, sau đó kiểm tra sức khỏe, TLS, proxy và các chỉ số. Giữ nhị phân trước đó cho đến khi mọi cổng đều vượt qua.
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 webshipTối ưu hóa dựa trên hồ sơ
Thu thập hồ sơ gốc theo mục tiêu mà không gây nhầm lẫn giữa đào tạo và sản xuất.
Mỗi mục tiêu Webship 1.1 có một CLI quan sát riêng để thu thập dữ liệu hồ sơ LLVM gốc của mục tiêu dưới lưu lượng đại diện của bạn. Sử dụng phiên bản và target triple chính xác, thực hành các tuyến và giao thức quan trọng, và dừng quá trình một cách nhẹ nhàng để nó có thể ghi mọi tệp .profraw.
Chọn đúng mục tiêu
Tải xuống CLI đào tạo PGO mà phiên bản phát hành và bộ ba mục tiêu Rust của nó hoàn toàn phù hợp với runtime mà bạn dự định tối ưu hóa. Trước tiên hãy xác minh SHA-256 đã được công bố.
Ghi lại lưu lượng đại diện
Đặt LLVM_PROFILE_FILE vào một thư mục có thể ghi, khởi động CLI đào tạo với một bản sao được xác thực của cấu hình thực, phát lại lưu lượng đại diện trực tiếp và qua proxy ngược, sau đó dừng Webship một cách nhẹ nhàng.
Hợp nhất các hồ sơ thô
Sử dụng llvm-profdata từ phiên bản trình biên dịch đã ghi lại cho bản phát hành. Hợp nhất mọi tệp .profraw phát ra thành một tệp sparse webship.profdata duy nhất.
Xây dựng lại và kiểm tra
Chỉ áp dụng hồ sơ đã hợp nhất cho đúng nguồn gốc, trình biên dịch, nhà cung cấp mã hóa, bộ tính năng và mục tiêu đã tạo ra nó. Thực hiện kiểm tra độ chính xác và hiệu suất trước khi thăng cấp.
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.profdataTham khảo dòng lệnh
Diện tích nhỏ, khởi động rõ ràng.
webship [OPTIONS] | webship update [OPTIONS]
-c, --config PATH- Chọn tập tin TOML. Nếu nó không tồn tại, Webship sẽ tạo tập tin này với một định danh TLS localhost riêng tư.
--check-config- Xác nhận cấu hình hoàn chỉnh và thoát mà không khởi động các trình nghe.
--print-effective-config- In ra cấu hình hợp nhất hiệu quả với các bí mật đã được loại bỏ.
update- Xác minh bản mô tả cộng đồng đã ký, chọn đúng mục tiêu nền tảng này, và cài đặt phiên bản mới hơn khi có sẵn.
--help / --version- In hướng dẫn lệnh hoặc phiên bản Webship đã cài đặt.
Các chế độ thất bại phổ biến
Bắt đầu với cấu hình, sau đó di chuyển ra ngoài.
- Chạy --check-config và sửa lỗi đầu tiên được báo cáo; các trường TOML không xác định sẽ bị từ chối.
- Xác nhận các cổng TCP và UDP đã được cấu hình có sẵn và được firewall cho phép.
- Xác nhận rằng chứng chỉ và khóa tồn tại, có thể đọc bởi tài khoản dịch vụ, và tạo thành một cặp khớp.
- Đối với TLS tự động, hãy xác nhận mọi tên miền đã được cấu hình đều phân giải đến máy chủ Webship.
- Gọi /health trên trình nghe ứng dụng cục bộ trước khi kiểm tra qua DNS hoặc đường dẫn tải ngoài.
- Bật khả năng quan sát có xác thực tạm thời khi cần bằng chứng thời gian chạy.