مرجع إعدادات الخادم
مخطط الإعدادات الرئيسي لخادم 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 تلقائي (مستنتج من مفتاح النطاق):
amends "elide:serve/ElideServer.pkl"
servers {
["example.com"] {
handler = new StaticFiles { root = "./dist"; spaFallback = true }
}
}وكيل عكسي:
servers {
["api.example.com"] {
handler = new ReverseProxy { upstreams { "backend:8080" } }
}
}وكيل أمامي مع MITM:
servers {
[":8080"] {
proxy { mitm {}; recording {} }
}
}مختلط — تقديم ملفات، ووكيل عكسي لواجهة برمجية، ووكيل أمامي على منفذ واحد:
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.
| النوع | المصدر |
|---|---|
Listen | Listen.pkl |
Protocol | Listen.pkl |
Route | Route.pkl |
RouteMatch | Route.pkl |
HttpMethod | Route.pkl |
Handler | Handler.pkl |
StaticFiles | Handler.pkl |
ReverseProxy | Handler.pkl |
Redirect | Handler.pkl |
Cgi | Handler.pkl |
Respond | Handler.pkl |
Upstream | Handler.pkl |
ProxyCache | Handler.pkl |
Middleware | Middleware.pkl |
Compress | Middleware.pkl |
RateLimit | Middleware.pkl |
Cors | Middleware.pkl |
Headers | Middleware.pkl |
BasicAuth | Middleware.pkl |
RequestId | Middleware.pkl |
AccessLog | Middleware.pkl |
Rewrite | Middleware.pkl |
BodyLimit | Middleware.pkl |
TailscaleAuth | Middleware.pkl |
ErrorPage | Middleware.pkl |
JwtAuth | Middleware.pkl |
JwtKey | Middleware.pkl |
JwtAlgorithm | Middleware.pkl |
SecurityHeaders | Middleware.pkl |
IpFilter | Middleware.pkl |
ConnectionLimit | Middleware.pkl |
TlsConfig | Tls.pkl |
CertStorage | Tls.pkl |
OnDemandTls | Tls.pkl |
ClientAuth | Tls.pkl |
DnsConfig | Dns.pkl |
TailscaleConfig | Tailscale.pkl |
DiscoConfig | Tailscale.pkl |
DataPlaneConfig | Tailscale.pkl |
DerpConfig | Tailscale.pkl |
TunnelConfig | Tunnel.pkl |
NetworkConfig | Network.pkl |
WireGuardConfig | Network.pkl |
WebRtcListener | Webrtc.pkl |
ContextMode | Webrtc.pkl |
ProxyConfig | Proxy.pkl |
MitmConfig | Mitm.pkl |
AccessControl | Access.pkl |
ProxyRule | ProxyRule.pkl |
ProxyMatch | ProxyRule.pkl |
RecordingConfig | Recording.pkl |
الأنواع المشتركة
ServerTransport
الواجهة الخلفية للنقل المستخدمة لقبول الاتصالات.
"auto" يختار أفضل واجهة خلفية متاحة للمنصة الحالية.
typealias ServerTransport = "auto" | "io_uring" | "kqueue" | "epoll" | "nio" | "iocp"LogLevel
مستوى الخطورة لمخرجات السجل المُهيكل. يتم تجاهل الرسائل التي تقل عن المستوى المُعدّ. مرتبة من الأكثر إلى الأقل تفصيلاً:
"trace"، "debug"، "info"، "warn"، "error".
typealias LogLevel = "trace" | "debug" | "info" | "warn" | "error"LogFormat
تنسيق مخرجات السجل المُهيكل.
-
"json" — كائن JSON واحد لكل سطر (مُوصى به لخطوط أنابيب السجلات) -
"text" — نص مضغوط في سطر واحد -
"pretty" — مخرجات متعددة الأسطر سهلة القراءة
typealias LogFormat = "json" | "text" | "pretty"Http3Policy
سياسة تفعيل HTTP/3 (QUIC).
-
"ifTls" (الافتراضي): تفعيل HTTP/3 بشفافية عند إعداد TLS؛ وتعطيله بصمت في حالة عدم وجوده. -
"required": يتطلب HTTP/3 — يرفض الخادم البدء إذا لم يكن TLS مُعدّاً. -
"disabled": لا يُفعَّل HTTP/3 أبداً، حتى عند توفر TLS.
typealias Http3Policy = "ifTls" | "required" | "disabled"ListenEntry
إدخال المستمع — إما كائن Listen كامل أو اختصار نصي.
"0.0.0.0:443" — عنوان مع البروتوكولات الافتراضية
new Listen { address = "0.0.0.0:443" } — الصيغة الكاملة
typealias ListenEntry = String | _listen.ListenUpstreamEntry
إدخال الخادم العلوي — إما كائن Upstream كامل أو اختصار نصي.
"backend-1:8080" — عنوان مع الوزن الافتراضي
new Upstream { address = "backend-1:8080" } — الصيغة الكاملة
typealias UpstreamEntry = String | _handler.UpstreamHandlerEntry
المعالج لكتلة الخادم — إما Handler كامل، أو اختصار كود حالة UInt.
new StaticFiles { root = "./dist" } — تقديم ملفات
new ReverseProxy { upstreams { "back:8080" } } — وكيل خادم علوي
404 — كود حالة ثابت
typealias HandlerEntry = UInt(isBetween(100, 599)) | _handler.Handler---
الخصائص الجذرية
تُعيَّن هذه الخصائص في المستوى الأعلى من ملف الإعدادات.| الحقل | النوع | الافتراضي | الوصف |
|---|---|---|---|
global | GlobalSettings | (فارغ) | إعدادات عامة تُطبَّق على جميع كتل الخوادم. راجع GlobalSettings |
servers | Mapping | null | كتل الخوادم، مفهرسة بالنطاق أو العنوان أو التسمية. |
tls | TlsConfig | (فارغ) | إعدادات TLS وإدارة الشهادات المُطبَّقة على جميع كتل الخوادم |
networks | Mapping | null | ارتباطات الشبكة المُسماة (Tailscale أو WireGuard أو كليهما). |
devMode | Boolean | false | تفعيل وضع التطوير. عند تعيينه إلى true، يحقن الخادم نقطة |
ktls | Boolean | false | تفعيل تفريغ TLS على مستوى النواة (kTLS). عند تعيينه إلى true |
autoHttpsRedirect | Boolean | true | إعادة توجيه طلبات HTTP العادية إلى HTTPS تلقائياً بالاستجابة 301 |
admin | AdminSettings | (فارغ) | واجهة الإدارة البرمجية للفحص أثناء التشغيل والمقاييس وفحوصات الصحة. |
observability | Observability | new Observability {} | التتبع الموزع والقياس عن بُعد (OpenTelemetry / W3C Trace Context). |
logging | LoggingSettings | (فارغ) | إعدادات السجل المُهيكل (الخطورة، التنسيق، سجلات الوصول). |
global
إعدادات عامة تُطبَّق على جميع كتل الخوادم. راجع GlobalSettings للحقول المتاحة (العمال، حدود الاتصالات، النقل، الاتصال المستمر، DNS).
servers
كتل الخوادم، مفهرسة بالنطاق أو العنوان أو التسمية.
عندما تكون القيمة null، تُستخدم كتلة خادم ضمنية واحدة مع الإعدادات الافتراضية. راجع ServerBlock لخيارات كل كتلة والتعليق على مستوى الوحدة لقواعد الاستنتاج من المفتاح.
servers {
["example.com"] {
handler = new StaticFiles { root = "./dist" }
}
[":8080"] {
proxy { mitm {}; recording {} }
}
}tls
إعدادات TLS وإدارة الشهادات المُطبَّقة على جميع كتل الخوادم افتراضياً. يمكن للكتل الفردية تجاوز حقول محددة عبر ServerBlock.tls. راجع TlsConfig لخيارات ACME وتخزين الشهادات وتدبيس OCSP ومجموعات التشفير.
networks
ارتباطات الشبكة المُسماة (Tailscale أو WireGuard أو كليهما).
كل إدخال هو نفق مستقل بمستوى بياناته الخاص وقواعد التوجيه والهوية. المفتاح هو اسم قابل للقراءة يُستخدم في السجلات والمقاييس. راجع NetworkConfig لخيارات كل ارتباط.
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 لإعادة التحميل المباشر ومقتطف مرافق في استجابات HTML. تُحدَّث الصفحات تلقائياً عند إعادة تشغيل الخادم أو تغيير الملفات.
لا تُفعّل هذا في بيئة الإنتاج — فهو يضيف تأخيراً ويكشف نقطة نهاية SSE غير مُصادق عليها.
ktls
تفعيل تفريغ TLS على مستوى النواة (kTLS). عند تعيينه إلى true، يسلّم الخادم جلسات TLS المكتملة إلى نظام TLS الفرعي في نواة Linux، مما يُتيح نسخ sendfile() بدون نسخ ونقل واصفات الملفات مع سياق TLS سليم.
يعود بصمت إلى TLS في فضاء المستخدم إذا كانت النواة تفتقر لدعم kTLS. يعمل فقط على Linux مع تفعيل CONFIG_TLS؛ ويُتجاهل على macOS وWindows.
autoHttpsRedirect
إعادة توجيه طلبات HTTP العادية إلى HTTPS تلقائياً بالاستجابة 301. يعمل فقط عند إعداد TLS (سواء عبر TLS التلقائي أو الشهادات اليدوية). عيّنه إلى false لتقديم كل من HTTP وHTTPS بدون إعادة توجيه.
admin
واجهة الإدارة البرمجية للفحص أثناء التشغيل والمقاييس وفحوصات الصحة. مُعطلة افتراضياً. راجع AdminSettings لعنوان الاستماع وخيارات المصادقة.
observability
التتبع الموزع والقياس عن بُعد (OpenTelemetry / W3C Trace Context). راجع Observability لاسم الخدمة ومعدل العينات وإعدادات نشر التتبع.
logging
إعدادات السجل المُهيكل (الخطورة، التنسيق، سجلات الوصول). راجع LoggingSettings للخيارات المتاحة.
GlobalSettings
إعدادات عامة تُطبَّق على كل كتلة خادم ومستمع.
تحكم هذه الإعدادات الافتراضية حدود الموارد والمهلات الزمنية واختيار النقل لعملية الخادم بالكامل. التجاوزات على مستوى الكتلة (حيثما توفرت) لها الأولوية على هذه القيم.| الحقل | النوع | الافتراضي | الوصف |
|---|---|---|---|
workers | UInt | 0 | عدد خيوط العمل للإدخال/الإخراج. 0 (الافتراضي) يختار تلقائياً بناءً |
maxConnections | UInt | 65536 | الحد الأقصى للاتصالات المتزامنة عبر جميع المستمعين. الاتصالات الجديدة |
shutdownTimeout | Duration | 30.s | مهلة التصفية الأنيقة عند الإيقاف. تُمنح الاتصالات النشطة هذه المدة |
serverName | String | "elide" | القيمة المُصدَرة في ترويسة الاستجابة Server. عيّنه إلى "" لإخفاء |
transport | ServerTransport | "auto" | واجهة الإدخال/الإخراج الخلفية لقبول وتشغيل الاتصالات. "auto" (الافتراضي) |
keepalive | Duration | 75.s | مهلة الاتصال المستمر لبروتوكول HTTP. تُغلق الاتصالات الخاملة بدون طلبات |
dns | DnsConfig | (فارغ) | إعدادات محلل DNS للاتصالات الصادرة (الوكيل العلوي، |
workers
عدد خيوط العمل للإدخال/الإخراج. 0 (الافتراضي) يختار تلقائياً بناءً على عدد وحدات المعالجة المركزية المتاحة — عادةً خيط عمل واحد لكل نواة.
ارفع هذا الرقم إذا أظهر التحليل تشبعاً مرتبطاً بالإدخال/الإخراج. لأحمال العمل المرتبطة بوحدة المعالجة المركزية (مثل CGI والوسيط الثقيل)، إضافة عمال أكثر من عدد الأنوية تعطي عوائد متناقصة.
maxConnections
الحد الأقصى للاتصالات المتزامنة عبر جميع المستمعين. تُرفض الاتصالات الجديدة بالاستجابة 503 Service Unavailable عند الوصول إلى هذا الحد.
الافتراضي (65536) مناسب لمعظم عمليات النشر. خفّضه للبيئات المحدودة بالذاكرة أو ارفعه لخوادم الحافة ذات عدد الاتصالات العالي.
shutdownTimeout
مهلة التصفية الأنيقة عند الإيقاف. تُمنح الاتصالات النشطة هذه المدة لإكمال الطلبات الجارية قبل إغلاقها قسراً.
خلال فترة التصفية، يتوقف الخادم عن قبول اتصالات جديدة لكنه يستمر في معالجة الاتصالات الحالية.
serverName
القيمة المُصدَرة في ترويسة الاستجابة Server. عيّنه إلى "" لإخفاء الترويسة بالكامل (مُوصى به لعمليات النشر الحساسة أمنياً).
transport
واجهة الإدخال/الإخراج الخلفية لقبول وتشغيل الاتصالات. "auto" (الافتراضي) يختار أفضل واجهة خلفية متاحة للمنصة الحالية.
تجاوز فقط عند تصحيح سلوك خاص بالنقل.
keepalive
مهلة الاتصال المستمر لبروتوكول HTTP. تُغلق الاتصالات الخاملة بدون طلبات جارية بعد هذه الفترة. عيّنه إلى 0.s لتعطيل الاتصال المستمر بالكامل (كل طلب يفتح اتصالاً جديداً).
الافتراضي (75 ثانية) أطول عمداً من مهلة معظم العملاء للسماح للعميل بالإغلاق أولاً، مما يتجنب حالة TIME_WAIT على الخادم.
dns
إعدادات محلل DNS للاتصالات الصادرة (الوكيل العلوي، تحديات ACME لـTLS التلقائي، إلخ.).
يتحكم في خوادم الأسماء واستخدام ملف المضيفين والتخزين المؤقت والمهلات الزمنية. يستخدم إعدادات resolv.conf للنظام افتراضياً. راجع DnsConfig للحقول المتاحة.
---
ServerBlock
كتلة خادم — مضيف افتراضي، أو مجموعة مستمعين، أو وكيل أمامي.
يحدد مفتاح الخادم في تعيين servers السلوك الافتراضي:
["example.com"] — مفتاح نطاق: TLS تلقائي، استماع على :443
[":8080"] — مفتاح عنوان: استماع على :8080
["my-service"] — تسمية: يتطلب تحديد listen/domains صراحةً
يمكن لكتلة الخادم تقديم محتوى (handler / routes)، أو العمل كوكيل أمامي (proxy)، أو الاثنين معاً. عندما يُعدّ كل من التوجيه والوكيل، تُعالج طلبات الوكيل الأمامي (absolute-URI / CONNECT) بواسطة الوكيل، والطلبات العادية بواسطة المسارات/المعالج.
Route لتوزيع حسب المسار وHandler لأنواع المعالجات المتاحة.
| الحقل | النوع | الافتراضي | الوصف |
|---|---|---|---|
listen | Listing | (فارغ) | العناوين التي تستمع عليها هذه الكتلة. يقبل نصوصاً أو كائنات Listen. |
domains | Listing | (فارغ) | أسماء النطاقات التي تستجيب لها هذه الكتلة. تُستخدم لغرضين: |
http3 | Http3Policy | "ifTls" | سياسة تفعيل HTTP/3 (QUIC) لهذه الكتلة. راجع Http3Policy |
handler | HandlerEntry | 404 | المعالج الافتراضي للطلبات التي لا تطابق أي Route. يعمل أيضاً كـ |
routes | Listing | (فارغ) | قائمة مرتبة من المسارات. تُقيَّم بترتيب التصريح؛ أول تطابق |
proxy | _proxy.ProxyConfig? | null | إعدادات الوكيل الأمامي. عند تعيينها، تقبل كتلة الخادم هذه |
tls | TlsBlockOverride? | null | تجاوزات TLS لكل كتلة. عندما تكون null (الافتراضي)، ترث الكتلة |
webrtc | Listing | (فارغ) | مستمعو WebRTC لكتلة الخادم هذه. كل إدخال يربط مقبس UDP |
middleware | Listing | (فارغ) | الوسيط المُطبَّق على كل طلب في كتلة الخادم هذه، قبل |
listen
العناوين التي تستمع عليها هذه الكتلة. يقبل نصوصاً أو كائنات Listen.
عندما يكون فارغاً، يُستنتج المستمع من مفتاح الخادم:
- مفتاح نطاق →
:443 مع TLS تلقائي - مفتاح عنوان → المفتاح نفسه (مثل
":8080") - مفتاح تسمية →
:8080 (HTTP) أو :443 (إذا كان TLS مُعدّاً)
الإدخالات الصريحة تتجاوز الاستنتاج دائماً.
listen { "0.0.0.0:8080" }
listen { new Listen { address = "[::]:443"; protocols { "h1"; "h2"; "h3" } } }domains
أسماء النطاقات التي تستجيب لها هذه الكتلة. تُستخدم لغرضين:
1. توجيه SNI — عندما تتشارك كتل خوادم متعددة مستمعاً واحداً، يختار امتداد TLS Server Name Indication الكتلة المناسبة. 2. TLS التلقائي — تُصدر الشهادات وتُجدد تلقائياً لكل نطاق مدرج عبر ACME (Let's Encrypt افتراضياً).
عندما يكون فارغاً، يُستنتج من مفتاح الخادم إذا كان يبدو كنطاق. عيّنه صراحةً للكتل متعددة النطاقات أو ذات أحرف البدل:
domains { "example.com"; "www.example.com" }http3
سياسة تفعيل HTTP/3 (QUIC) لهذه الكتلة. راجع Http3Policy للخيارات المتاحة. الافتراضي "ifTls" يُفعّل HTTP/3 بشفافية عند إعداد TLS.
handler
المعالج الافتراضي للطلبات التي لا تطابق أي Route. يعمل أيضاً كمعالج وحيد في وضع المعالج المفرد (عندما يكون routes فارغاً).
يقبل أي صنف فرعي من Handler أو عدد صحيح لكود الحالة:
handler = new StaticFiles { root = "./dist" }
handler = new ReverseProxy { upstreams { "backend:8080" } }
handler = 404عند تعريف routes أيضاً، تمرر الطلبات غير المطابقة إلى هذا المعالج. الافتراضي (404) يُرجع استجابة 404 بسيطة.
routes
قائمة مرتبة من المسارات. تُقيَّم بترتيب التصريح؛ أول تطابق يفوز. عندما لا يتطابق أي مسار، يُستدعى معالج مستوى الكتلة handler.
لخادم بمعالج واحد، اترك هذا فارغاً وعيّن handler بدلاً من ذلك. راجع Route لصيغة المطابقة والأمثلة.
proxy
إعدادات الوكيل الأمامي. عند تعيينها، تقبل كتلة الخادم هذه طلبات الوكيل الأمامي (absolute-URI وCONNECT) بالإضافة إلى الطلبات العادية المطابقة بالمسارات.
تُعرَّف طلبات الوكيل الأمامي بصيغتها في HTTP:
-
GET http://example.com/path — absolute-URI (وكيل HTTP عادي) -
CONNECT example.com:443 — طلب نفق (وكيل HTTPS)
تُعالج الطلبات العادية (URI نسبي) بواسطة routes / handler كالمعتاد، مما يسمح لفحص الصحة أو ملف PAC أو واجهة ويب بالتعايش مع وظائف الوكيل على نفس المنفذ.
راجع ProxyConfig لخيارات MITM والتسجيل والتحكم بالوصول.
proxy { mitm {}; recording {} }tls
تجاوزات TLS لكل كتلة. عندما تكون null (الافتراضي)، ترث الكتلة إعدادات tls على المستوى الجذري. عيّن هذا لتوفير شهادة خاصة بالكتلة أو حد أدنى لإصدار TLS أو سياسة mTLS.
راجع TlsBlockOverride للحقول المتاحة.
webrtc
مستمعو WebRTC لكتلة الخادم هذه. كل إدخال يربط مقبس UDP لحركة STUN/DTLS/SCTP ويوزع اتصالات قنوات البيانات الواردة إلى معالج JS.
راجع WebRtcListener لخيارات كل مستمع.
webrtc {
new WebRtcListener { port = 3478; handler = "./rtc-handler.js" }
}middleware
الوسيط المُطبَّق على كل طلب في كتلة الخادم هذه، قبل مطابقة المسارات. الوسيط على مستوى المسار (راجع Route.middleware) يعمل بعد هذه ويلتف فقط حول المعالج المطابق.
يُطبَّق الوسيط بترتيب التصريح (الأول = الطبقة الخارجية). راجع Middleware لأنواع الوسيط المتاحة.
---
TlsBlockOverride
تجاوزات TLS لكل كتلة. استخدم هذا لتوفير شهادة خاصة بالكتلة أو تشديد سياسة TLS لكتلة خادم واحدة. الحقول المتروكة بقيمة null ترث من TlsConfig على المستوى الجذري.
tls الجذري وTlsConfig.
| الحقل | النوع | الافتراضي | الوصف |
|---|---|---|---|
certFile | String? | null | مسار ملف شهادة بترميز PEM. تعيينه يُعطل TLS التلقائي |
keyFile | String? | null | مسار ملف المفتاح الخاص بترميز PEM المقابل لـcertFile. |
minVersion | _tls.TlsVersion? | null | الحد الأدنى لإصدار TLS المقبول على مستمعي هذه الكتلة. يتجاوز |
cipherSuites | _tls.CipherSuitePreset? | null | مجموعة التشفير المُعدة مسبقاً لهذه الكتلة. يتجاوز TlsConfig.cipherSuites |
clientAuth | ClientAuth? | null | مصادقة شهادة العميل المتبادلة (mTLS) لهذه |
certFile
مسار ملف شهادة بترميز PEM. تعيينه يُعطل TLS التلقائي لهذه الكتلة — تُستخدم الشهادة كما هي بدون تجديد تلقائي. يجب إقرانه مع keyFile.
keyFile
مسار ملف المفتاح الخاص بترميز PEM المقابل لـcertFile. مطلوب عند تعيين certFile؛ يُتجاهل خلاف ذلك.
minVersion
الحد الأدنى لإصدار TLS المقبول على مستمعي هذه الكتلة. يتجاوز TlsConfig.minVersion. القيم الشائعة: "1.2"، "1.3".
cipherSuites
مجموعة التشفير المُعدة مسبقاً لهذه الكتلة. يتجاوز TlsConfig.cipherSuites عند تعيينه. راجع CipherSuitePreset للمجموعات المتاحة.
clientAuth
مصادقة شهادة العميل المتبادلة (mTLS) لهذه الكتلة. عند تعيينه، يجب على العملاء تقديم شهادة صالحة موقعة من جهة مصادقة موثوقة. راجع ClientAuth للأوضاع (طلب إلزامي، طلب اختياري، تحقق).
---
AccessLogSettings
يتحكم في مخرجات سجل الوصول لكل طلب.
تُصدر سجلات الوصول مرة واحدة لكل طلب مكتمل وتتضمن الطريقة والمسار والحالة والتوقيت وحجم المعلومات. متداخلة تحت LoggingSettings.accessLog.
| الحقل | النوع | الافتراضي | الوصف |
|---|---|---|---|
enabled | Boolean | true | ما إذا كان تسجيل الوصول نشطاً. عند false، لا تُصدر سطور سجل |
output | String | "stdout" | وجهة السجل. يقبل "stdout" أو "stderr" أو مسار ملف مطلق |
fields | Listing | null | قائمة صريحة بأسماء الحقول المُضمنة في كل إدخال سجل. عند null |
enabled
ما إذا كان تسجيل الوصول نشطاً. عند false، لا تُصدر سطور سجل لكل طلب بغض النظر عن الإعدادات الأخرى.
output
وجهة السجل. يقبل "stdout" أو "stderr" أو مسار ملف مطلق (مثل "/var/log/elide/access.log"). مخرجات الملف تُلحق وتُدار تلقائياً.
fields
قائمة صريحة بأسماء الحقول المُضمنة في كل إدخال سجل. عند null (الافتراضي)، تُصدر جميع الحقول القياسية. عيّن هذا لتقليل حجم السجل أو استبعاد الحقول الحساسة.
---
LoggingSettings
إعدادات السجل المُهيكل لعملية الخادم.
يتحكم في عتبة الخطورة وتنسيق المخرجات وسلوك سجل الوصول لجميع مخرجات سجل الخادم.| الحقل | النوع | الافتراضي | الوصف |
|---|---|---|---|
level | LogLevel | "info" | الحد الأدنى لمستوى الخطورة المُصدَر. تُتجاهل الرسائل الأقل من هذا المستوى |
format | LogFormat | "json" | تنسيق المخرجات لسطور السجل. |
accessLog | AccessLogSettings | (فارغ) | إعدادات سجل الوصول لكل طلب. عيّنه إلى null لتعطيل |
level
الحد الأدنى لمستوى الخطورة المُصدَر. تُتجاهل الرسائل الأقل من هذا المستوى. مرتبة من الأكثر إلى الأقل تفصيلاً:
"trace" > "debug" > "info" > "warn" > "error".
format
تنسيق المخرجات لسطور السجل.
-
"json" — JSON مُهيكل، كائن واحد لكل سطر (الافتراضي؛ مُوصى به للإنتاج وخطوط أنابيب تجميع السجلات) -
"text" — نص مضغوط في سطر واحد -
"pretty" — مخرجات متعددة الأسطر سهلة القراءة (مفيدة في التطوير)
accessLog
إعدادات سجل الوصول لكل طلب. عيّنه إلى null لتعطيل تسجيل الوصول بالكامل. راجع AccessLogSettings لخيارات مستوى الحقول.
---
AdminSettings
إعدادات واجهة الإدارة البرمجية للفحص والتحكم أثناء التشغيل.
تكشف واجهة الإدارة البرمجية نقاط نهاية لفحوصات الصحة والمقاييس وإعادة تحميل الإعدادات والتشخيصات أثناء التشغيل. تستمع على عنوان منفصل عن الخادم الرئيسي للسماح بالعزل على مستوى جدار الحماية.| الحقل | النوع | الافتراضي | الوصف |
|---|---|---|---|
enabled | Boolean | false | ما إذا كانت واجهة الإدارة نشطة. عند false (الافتراضي)، لا يُفتح مستمع |
listen | String | "tcp:127.0.0.1:9091" | عنوان الاستماع لواجهة الإدارة. يقبل صيغتين: |
token | String? | null | رمز حامل لمصادقة واجهة الإدارة. عند تعيينه، تتطلب جميع نقاط نهاية |
enabled
ما إذا كانت واجهة الإدارة نشطة. عند false (الافتراضي)، لا يُفتح مستمع إدارة ولا يمكن الوصول لنقاط نهاية الإدارة.
listen
عنوان الاستماع لواجهة الإدارة. يقبل صيغتين:
"tcp:HOST:PORT" — مقبس TCP (مثل "tcp:127.0.0.1:9091")
"unix:/path/to/socket" — مقبس نطاق Unix
ربطه بـ127.0.0.1 (الافتراضي) لتقييد الوصول إلى الجهاز المحلي. استخدم مقبس Unix للبيئات التي لا يُرغب فيها بـTCP.
token
رمز حامل لمصادقة واجهة الإدارة. عند تعيينه، تتطلب جميع نقاط نهاية الإدارة ترويسة Authorization: Bearer . نقاط نهاية فحص الصحة في Kubernetes (/healthz، /readyz) مُعفاة من المصادقة.
عندما تكون القيمة null، تكون واجهة الإدارة بدون مصادقة — تأكد من أن عنوان الاستماع غير متاح للعموم.
---
Observability
إعدادات التتبع الموزع والقياس عن بُعد.
يتحكم في نشر W3C Trace Context وتصدير تتبعات OpenTelemetry. تُصدر التتبعات عبر OTLP عند إعداد نقطة نهاية المُصدّر في البيئة (OTEL_EXPORTER_OTLP_ENDPOINT).
| الحقل | النوع | الافتراضي | الوصف |
|---|---|---|---|
traceContext | Boolean | true | تفعيل تحليل ونشر ترويسات W3C Trace Context. عند true |
serviceName | String | "elide" | اسم خدمة OpenTelemetry المُبلَّغ عنه في فترات التتبع. غيّر هذا لـ |
samplingRate | Float | 1.0 | معدل أخذ العينات للتتبع، من 0.0 (لا عينات) إلى 1.0 (عينة |
traceContext
تفعيل تحليل ونشر ترويسات W3C Trace Context. عند true (الافتراضي)، تُحلل ترويسات traceparent / tracestate الواردة وتُمرر إلى الخوادم العلوية، وتتضمن الاستجابات الصادرة ترويسات التتبع.
serviceName
اسم خدمة OpenTelemetry المُبلَّغ عنه في فترات التتبع. غيّر هذا للتمييز بين مثيلات Elide المتعددة في واجهة تتبع مشتركة.
samplingRate
معدل أخذ العينات للتتبع، من 0.0 (لا عينات) إلى 1.0 (عينة لكل طلب). الافتراضي (1.0) مناسب للتطوير والخدمات منخفضة الحركة. لبيئات الإنتاج عالية الحركة، القيم بين 0.01 و0.1 هي الشائعة.
---