مرجع إعدادات الخادم

مخطط الإعدادات الرئيسي لخادم ⁦Elide⁩ لبروتوكول ⁦HTTP⁩.

هذا الوحدة هي جذر إعدادات ⁦elide serve⁩. تغطي المستمعين والتوجيه والوكيل الأمامي و⁦TLS⁩ وواجهة الإدارة البرمجية والوسيط العام والمراقبة. كل حقل له قيمة افتراضية معقولة، لذا يحتاج الإعداد الأدنى فقط إلى تحديد ما يختلف عن الإعدادات الافتراضية.

مفاتيح كتلة الخادم

يستخدم تعيين ⁦servers⁩ المفتاح كهوية للخادم. يحدد المفتاح إعدادات المستمع والنطاق الافتراضية:

  • مفتاح النطاق (يحتوي على ⁦.⁩، بدون ⁦:⁩): يستنتج ⁦listen :443⁩ و⁦domains { key }⁩ مع ⁦TLS⁩ تلقائي. أمثلة: ⁦"example.com"⁩، ⁦"api.example.com"⁩.
  • مفتاح العنوان (يبدأ بـ ⁦:⁩ أو يطابق ⁦host:port⁩): يستنتج ⁦listen { key }⁩. أمثلة: ⁦":8080"⁩، ⁦"0.0.0.0:3128"⁩.
  • مفتاح التسمية (أي شيء آخر): لا يوجد استنتاج؛ يجب تعيين ⁦listen⁩ و⁦domains⁩ صراحةً. أمثلة: ⁦"main"⁩، ⁦"internal"⁩.

تصريحات ⁦listen⁩ أو ⁦domains⁩ الصريحة تتجاوز الاستنتاج دائماً.

أمثلة سريعة

موقع ثابت مع ⁦TLS⁩ تلقائي (مستنتج من مفتاح النطاق):

pkl
amends "elide:serve/ElideServer.pkl"
servers {
  ["example.com"] {
    handler = new StaticFiles { root = "./dist"; spaFallback = true }
  }
}

وكيل عكسي:

pkl
servers {
  ["api.example.com"] {
    handler = new ReverseProxy { upstreams { "backend:8080" } }
  }
}

وكيل أمامي مع ⁦MITM⁩:

pkl
servers {
  [":8080"] {
    proxy { mitm {}; recording {} }
  }
}

مختلط — تقديم ملفات، ووكيل عكسي لواجهة برمجية، ووكيل أمامي على منفذ واحد:

pkl
servers {
  ["app.example.com"] {
    routes {
      new { match = "/api/**"; handler = new ReverseProxy { upstreams { "backend:9000" } } }
    }
    handler = new StaticFiles { root = "./dist"; spaFallback = true }
    proxy { mitm {}; recording {} }
  }
}

> هذه الصفحة مُولَّدة تلقائياً من مخطط ⁦PKL⁩. راجع دليل الخادم لأمثلة الاستخدام.

صفحات مرجع الخادم

الصفحةالوصف
مرجع المعالجاتمرجع إعدادات معالجات خادم ⁦Elide⁩
مرجع الوسيطمرجع إعدادات وسيط خادم ⁦Elide⁩
مرجع إعدادات ⁦TLS⁩مرجع إعدادات ⁦TLS⁩ وإدارة الشهادات
مرجع المستمعمرجع إعدادات عناوين المستمع والبروتوكولات
مرجع المساراتمرجع إعدادات مطابقة المسارات وتوزيعها
مرجع إعدادات الشبكةمرجع إعدادات ارتباطات الشبكة
مرجع إعدادات ⁦Tailscale⁩مرجع إعدادات تكامل ⁦Tailscale⁩
مرجع إعدادات الأنفاقمرجع إعدادات جسر أنفاق ⁦WireGuard⁩
مرجع إعدادات ⁦DNS⁩مرجع إعدادات محلل ⁦DNS⁩
مرجع إعدادات ⁦WebRTC⁩مرجع إعدادات مستمعي ⁦WebRTC⁩

صفحات مرجع الوكيل

الصفحةالوصف
مرجع إعدادات الوكيلمرجع إعدادات وكيل ⁦Elide⁩ الأمامي
مرجع إعدادات ⁦MITM⁩مرجع إعدادات اعتراض ⁦TLS⁩ بأسلوب ⁦MITM⁩
مرجع التحكم بالوصولمرجع إعدادات التحكم بوصول الوكيل
مرجع قواعد الوكيلمرجع إعدادات قواعد اعتراض الوكيل
مرجع إعدادات التسجيلمرجع إعدادات تسجيل حركة مرور الوكيل

إعادة تصدير الأنواع

تعيد الوحدة الجذرية تصدير الأنواع من الوحدات الفرعية لتسهيل التعديل على ⁦ElideServer.pkl⁩.
النوعالمصدر
ListenListen.pkl
ProtocolListen.pkl
RouteRoute.pkl
RouteMatchRoute.pkl
HttpMethodRoute.pkl
HandlerHandler.pkl
StaticFilesHandler.pkl
ReverseProxyHandler.pkl
RedirectHandler.pkl
CgiHandler.pkl
RespondHandler.pkl
UpstreamHandler.pkl
ProxyCacheHandler.pkl
MiddlewareMiddleware.pkl
CompressMiddleware.pkl
RateLimitMiddleware.pkl
CorsMiddleware.pkl
HeadersMiddleware.pkl
BasicAuthMiddleware.pkl
RequestIdMiddleware.pkl
AccessLogMiddleware.pkl
RewriteMiddleware.pkl
BodyLimitMiddleware.pkl
TailscaleAuthMiddleware.pkl
ErrorPageMiddleware.pkl
JwtAuthMiddleware.pkl
JwtKeyMiddleware.pkl
JwtAlgorithmMiddleware.pkl
SecurityHeadersMiddleware.pkl
IpFilterMiddleware.pkl
ConnectionLimitMiddleware.pkl
TlsConfigTls.pkl
CertStorageTls.pkl
OnDemandTlsTls.pkl
ClientAuthTls.pkl
DnsConfigDns.pkl
TailscaleConfigTailscale.pkl
DiscoConfigTailscale.pkl
DataPlaneConfigTailscale.pkl
DerpConfigTailscale.pkl
TunnelConfigTunnel.pkl
NetworkConfigNetwork.pkl
WireGuardConfigNetwork.pkl
WebRtcListenerWebrtc.pkl
ContextModeWebrtc.pkl
ProxyConfigProxy.pkl
MitmConfigMitm.pkl
AccessControlAccess.pkl
ProxyRuleProxyRule.pkl
ProxyMatchProxyRule.pkl
RecordingConfigRecording.pkl

الأنواع المشتركة

ServerTransport

الواجهة الخلفية للنقل المستخدمة لقبول الاتصالات.

"auto"⁩ يختار أفضل واجهة خلفية متاحة للمنصة الحالية.

pkl
typealias ServerTransport = "auto" | "io_uring" | "kqueue" | "epoll" | "nio" | "iocp"

LogLevel

مستوى الخطورة لمخرجات السجل المُهيكل. يتم تجاهل الرسائل التي تقل عن المستوى المُعدّ. مرتبة من الأكثر إلى الأقل تفصيلاً: ⁦"trace"⁩، ⁦"debug"⁩، ⁦"info"⁩، ⁦"warn"⁩، ⁦"error"⁩.

pkl
typealias LogLevel = "trace" | "debug" | "info" | "warn" | "error"

LogFormat

تنسيق مخرجات السجل المُهيكل.

  • "json"⁩ — كائن ⁦JSON⁩ واحد لكل سطر (مُوصى به لخطوط أنابيب السجلات)
  • "text"⁩ — نص مضغوط في سطر واحد
  • "pretty"⁩ — مخرجات متعددة الأسطر سهلة القراءة
pkl
typealias LogFormat = "json" | "text" | "pretty"

Http3Policy

سياسة تفعيل ⁦HTTP/3⁩ (⁦QUIC⁩).

  • "ifTls"⁩ (الافتراضي): تفعيل ⁦HTTP/3⁩ بشفافية عند إعداد ⁦TLS⁩؛ وتعطيله بصمت في حالة عدم وجوده.
  • "required"⁩: يتطلب ⁦HTTP/3⁩ — يرفض الخادم البدء إذا لم يكن ⁦TLS⁩ مُعدّاً.
  • "disabled"⁩: لا يُفعَّل ⁦HTTP/3⁩ أبداً، حتى عند توفر ⁦TLS⁩.
pkl
typealias Http3Policy = "ifTls" | "required" | "disabled"

ListenEntry

إدخال المستمع — إما كائن ⁦Listen⁩ كامل أو اختصار نصي.

"0.0.0.0:443"⁩ — عنوان مع البروتوكولات الافتراضية ⁦new Listen { address = "0.0.0.0:443" }⁩ — الصيغة الكاملة

pkl
typealias ListenEntry = String | _listen.Listen

UpstreamEntry

إدخال الخادم العلوي — إما كائن ⁦Upstream⁩ كامل أو اختصار نصي.

"backend-1:8080"⁩ — عنوان مع الوزن الافتراضي ⁦new Upstream { address = "backend-1:8080" }⁩ — الصيغة الكاملة

pkl
typealias UpstreamEntry = String | _handler.Upstream

HandlerEntry

المعالج لكتلة الخادم — إما ⁦Handler⁩ كامل، أو اختصار كود حالة ⁦UInt⁩.

new StaticFiles { root = "./dist" }⁩ — تقديم ملفات ⁦new ReverseProxy { upstreams { "back:8080" } }⁩ — وكيل خادم علوي ⁦404⁩ — كود حالة ثابت

pkl
typealias HandlerEntry = UInt(isBetween(100, 599)) | _handler.Handler

---

الخصائص الجذرية

تُعيَّن هذه الخصائص في المستوى الأعلى من ملف الإعدادات.
الحقلالنوعالافتراضيالوصف
globalGlobalSettings(فارغ)إعدادات عامة تُطبَّق على جميع كتل الخوادم. راجع ⁦GlobalSettings
serversMapping?nullكتل الخوادم، مفهرسة بالنطاق أو العنوان أو التسمية.
tlsTlsConfig(فارغ)إعدادات ⁦TLS⁩ وإدارة الشهادات المُطبَّقة على جميع كتل الخوادم
networksMapping?nullارتباطات الشبكة المُسماة (⁦Tailscale⁩ أو ⁦WireGuard⁩ أو كليهما).
devModeBooleanfalseتفعيل وضع التطوير. عند تعيينه إلى ⁦true⁩، يحقن الخادم نقطة
ktlsBooleanfalseتفعيل تفريغ ⁦TLS⁩ على مستوى النواة (⁦kTLS⁩). عند تعيينه إلى ⁦true
autoHttpsRedirectBooleantrueإعادة توجيه طلبات ⁦HTTP⁩ العادية إلى ⁦HTTPS⁩ تلقائياً بالاستجابة ⁦301
adminAdminSettings(فارغ)واجهة الإدارة البرمجية للفحص أثناء التشغيل والمقاييس وفحوصات الصحة.
observabilityObservabilitynew Observability {}التتبع الموزع والقياس عن بُعد (⁦OpenTelemetry⁩ / ⁦W3C Trace Context⁩).
loggingLoggingSettings(فارغ)إعدادات السجل المُهيكل (الخطورة، التنسيق، سجلات الوصول).

global

إعدادات عامة تُطبَّق على جميع كتل الخوادم. راجع ⁦GlobalSettings⁩ للحقول المتاحة (العمال، حدود الاتصالات، النقل، الاتصال المستمر، ⁦DNS⁩).

servers

كتل الخوادم، مفهرسة بالنطاق أو العنوان أو التسمية.

عندما تكون القيمة ⁦null⁩، تُستخدم كتلة خادم ضمنية واحدة مع الإعدادات الافتراضية. راجع ⁦ServerBlock⁩ لخيارات كل كتلة والتعليق على مستوى الوحدة لقواعد الاستنتاج من المفتاح.

pkl
servers {
  ["example.com"] {
    handler = new StaticFiles { root = "./dist" }
  }
  [":8080"] {
    proxy { mitm {}; recording {} }
  }
}

tls

إعدادات ⁦TLS⁩ وإدارة الشهادات المُطبَّقة على جميع كتل الخوادم افتراضياً. يمكن للكتل الفردية تجاوز حقول محددة عبر ⁦ServerBlock.tls⁩. راجع ⁦TlsConfig⁩ لخيارات ⁦ACME⁩ وتخزين الشهادات وتدبيس ⁦OCSP⁩ ومجموعات التشفير.

networks

ارتباطات الشبكة المُسماة (⁦Tailscale⁩ أو ⁦WireGuard⁩ أو كليهما).

كل إدخال هو نفق مستقل بمستوى بياناته الخاص وقواعد التوجيه والهوية. المفتاح هو اسم قابل للقراءة يُستخدم في السجلات والمقاييس. راجع ⁦NetworkConfig⁩ لخيارات كل ارتباط.

pkl
networks {
  ["production"] {
    tailscale { direct = true; authKey = env("TS_PROD_KEY") }
    tunnel { bridgeInbound = true }
  }
  ["office-vpn"] {
    wireguard { configFile = "./wg-office.conf" }
    tunnel { bridgeOutbound = true }
  }
}

devMode

تفعيل وضع التطوير. عند تعيينه إلى ⁦true⁩، يحقن الخادم نقطة نهاية ⁦SSE⁩ لإعادة التحميل المباشر ومقتطف ⁦