إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يمكن استخدام خادم وكيل عكسي أمام Azure SignalR Service. يمكن أن تساعد خوادم الوكيل العكسية بين العملاء وخدمة Azure SignalR والخدمات الأخرى في سيناريوهات مختلفة. على سبيل المثال، يمكن للخوادم الوكيلة العكسية تحميل طلبات العميل المختلفة إلى خدمات خلفية مختلفة، ويمكنك عادة تكوين قواعد توجيه مختلفة لطلبات العميل المختلفة، وتوفير تجربة مستخدم سلسة للمستخدمين الذين يصلون إلى خدمات خلفية مختلفة. يمكنهم أيضا حماية خوادم الواجهة الخلفية من الثغرات الأمنية الشائعة التي تستغلها مع التحكم المركزي في الحماية. يمكن أن تعمل خدمات مثل Azure Application Gateway أو Azure API Management أو Akamai كخوادم وكيل عكسية.
البنية الشائعة التي تستخدم خادم وكيل عكسي مع Azure SignalR هي كما يلي:
هام
تظهر سلسلة الاتصال الأولية في هذه المقالة لأغراض العرض التوضيحي فقط.
يتضمن سلسلة الاتصال معلومات التخويل المطلوبة لتطبيقك للوصول إلى خدمة Azure SignalR. مفتاح الوصول داخل سلسلة الاتصال يشبه كلمة مرور الجذر للخدمة الخاصة بك. في بيئات الإنتاج، قم دائما بحماية مفاتيح الوصول الخاصة بك. استخدم Azure Key Vault لإدارة مفاتيحك وتدويرها بأمان وتأمين سلسلة الاتصال باستخدام معرف Microsoft Entra وتخويل الوصول باستخدام معرف Microsoft Entra.
تجنب توزيع مفاتيح الوصول إلى مستخدمين آخرين، أو ترميزها ترميزًا ثابتًا، أو حفظها في أي مكان في نص عادي يمكن للآخرين الوصول إليه. قم بتدوير المفاتيح الخاصة بك إذا كنت تعتقد أنها قد تعرضت للخطر.
الممارسات العامة
هناك العديد من الممارسات العامة التي يجب اتباعها عند استخدام وكيل عكسي أمام SignalR Service.
تظهر سلسلة الاتصال الأولية في هذه المقالة لأغراض العرض التوضيحي فقط. في بيئات الإنتاج، قم دائما بحماية مفاتيح الوصول الخاصة بك. استخدم Azure Key Vault لإدارة مفاتيحك وتدويرها بأمان وتأمين سلسلة الاتصال باستخدام معرف Microsoft Entra وتخويل الوصول باستخدام معرف Microsoft Entra.
تأكد من إعادة كتابة عنوان HTTP HOST الوارد باستخدام عنوان URL لخدمة Azure SignalR، على سبيل المثال
https://demo.service.signalr.net. Azure SignalR هي خدمة متعددة المستأجرين، وتعتمد علىHOSTالعنوان للحل إلى نقطة النهاية الصحيحة. على سبيل المثال، عند تكوين بوابة التطبيق ل Azure SignalR، حدد نعم للخيار تجاوز باسم مضيف جديد.عندما يمر عميلك عبر الوكيل العكسي الخاص بك إلى Azure SignalR، قم بتعيين
ClientEndpointكعنون URL للوكيل العكسي. عندما يتفاوضالعميل مع خادم المركز الخاص بك، سيعيد خادم المركز عنوان URL المحدد فيClientEndpointللعميل للاتصال. تحقق هنا لمزيد من التفاصيل.هناك طريقتان لتكوين
ClientEndpoint:ClientEndpointإضافة مقطع إلى ConnectionString:Endpoint=...;AccessKey=...;ClientEndpoint=<reverse-proxy-URL>تكوين
ClientEndpointعند استدعاءAddAzureSignalR:services.AddSignalR().AddAzureSignalR(o => { o.Endpoints = new Microsoft.Azure.SignalR.ServiceEndpoint[1] { new Microsoft.Azure.SignalR.ServiceEndpoint("<azure-signalr-connection-string>") { ClientEndpoint = new Uri("<reverse-proxy-URL>") } }; })
عندما يمر عميل عبر الوكيل العكسي الخاص بك إلى Azure SignalR، هناك نوعان من الطلبات:
- طلب نشر HTTP إلى
<reverse-proxy-URL>/client/negotiate/، والذي نسميه كطلب تفاوض - طلب اتصال WebSocket/SSE/LongPolling اعتمادا على نوع النقل الخاص بك إلى
<reverse-proxy-URL>/client/، والذي نسميه كطلب اتصال.
تأكد من أن الوكيل العكسي يدعم كلا النوعين من النقل للمسار
/client/الفرعي. على سبيل المثال، عندما يكون نوع النقل الخاص بك هو WebSocket، تأكد من أن الوكيل العكسي يدعم كلا من HTTP وWebSocket للمسار/client/الفرعي.إذا قمت بتكوين خدمات SignalR متعددة خلف الوكيل العكسي، فتأكد من
negotiateتوجيه الطلب والطلبconnectبنفسasrs_request_idمعلمة الاستعلام (بمعنى أنها لنفس الاتصال) إلى نفس مثيل خدمة SignalR.- طلب نشر HTTP إلى
بالنسبة إلى
ServerSentEvent(SSE)، تأكد من أن الوكيل العكسي لا يقوم بالتخزين المؤقت أو استجابة ذاكرة التخزين المؤقت. على سبيل المثال، تسرد APIM خانات الاختيار هنا عند تكوين واجهة برمجة التطبيقات للأحداث المرسلة من الخادم.عند استخدام الوكيل العكسي، يمكنك تأمين خدمة SignalR بشكل أكبر عن طريق تعطيل الوصول إلى الشبكة العامة واستخدام نقاط النهاية الخاصة للسماح بالوصول الخاص فقط من الوكيل العكسي إلى خدمة SignalR من خلال VNet.
الخطوات التالية
تعرف على كيفية العمل مع Application Gateway.
تعرف على كيفية العمل مع APIM.
تعرف على المزيد حول الداخلية ل Azure SignalR.