كيف أسمح للمستخدم باستخدام اسم المجال الخاص به لخدمة مستضافة؟

StackOverflow https://stackoverflow.com/questions/144630

سؤال

أنا أعمل على تطبيق ويب ASP.NET MVC يسمح للأشخاص بنشر المحتوى، ولكن بخلاف نشر المحتوى على خادم بعيد، أريد السماح للأشخاص باستخدام اسم المجال الخاص بهم مباشرة.على سبيل المثال، يمكن للمستخدم "Tom" أن يجعل اسم المجال الخاص به TomSite.com يشير إليه http://www.mywebapp.com/user/tom, ، ولكن سيتم تعيين المسار الفرعي أيضًا.على سبيل المثال، سيتم تعيين TomSite.com/path إلى www.mywebapp.com/user/tom/path، وهذا واضح لزائر الويب.لن يتمكن الزائر أبدًا من رؤية "mywebapp.com" في أي مكان على TomSite.com.

أعتقد أن Smugmug.com يقدم مثل هذه الخدمة، للسماح للأشخاص باستخدام اسم المجال الخاص بهم لمحفظة الصور.أريد تحقيق نفس النتيجة.

كيف يمكنني أن أفعل هذا؟شكرًا!

هل كانت مفيدة؟

المحلول

وهذا يتطلب خطوات متعددة.

عليك أولاً أن تكتشف كيف سيقوم المستخدمون بتهيئة نطاقهم للحصول على سجل CNAME لموقعك.يمكنك تحقيق ذلك بعدة طرق حيث أفضلها هو التعليم.يتطلب عقد شراكات مع مقدمي خدمات الاستضافة قدرًا كبيرًا من الحجم.

في IIS، سيتطلب منك ذلك إما إضافة كل اسم مضيف يدويًا (ولكن يمكن أيضًا أرشفة ذلك من خلال البرمجة النصية) أو أن يكون لديك عنوان IP مخصص لموقعك فقط.

هناك أيضًا حاجة إلى ربط المجال بحساب.يتعين على المستخدم إضافة هذا بنفسه ومن المحتمل أن تقوم بإضافة علامة اختيار في الواجهة تؤكد أن النطاق موجه إلى الخادم الخاص بك.سيبدو رمز هذا (تذكر تضمين مساحة الاسم System.Net).

if (Dns.GetHostEntry("www.user.example.com").HostName == "www.example.com")
{
    // www.user.example.com is a CNAME for www.example.com
}

في مشروع ASP.NET MVC الخاص بك، تحتاج إلى تنفيذ مسارات لهذا الغرض بالتحديد.قم بإنشاء فئة مخصصة ترث من الطريق والتي تأخذ المجال أيضًا في الاعتبار.

نصائح أخرى

يطلب Smugmug (الذي ذكرته) من مستخدميه إعداد سجل CNAME الذي سيستخدم الاسم المستعار لعنوان url لقسم الصور الشخصية للمستخدم.بالنسبة لمعظم المستخدمين، قد يتطلب هذا منهم الاتصال بمضيفهم أو البحث عن ملفات المساعدة من أجل إعداد كل شيء.

لذلك، في حين أن www.tomsite.com يمكنه تقديم الصفحات المستضافة على www.mywebapp.com بشفافية، إلا أنه سيتعين على المستخدمين بذل نوع من الجهد.ولجعل الأمر سلسًا تمامًا، ستحتاج إلى نوع من الترتيب مع مضيف الويب الخاص بالمستخدمين (يبدو أن Smugmug لديه مثل هذا الترتيب مع GoDaddy).

أشك في أنك ستتمكن من إعداد مثل هذا التكامل مع جميع مضيفي الويب الموجودين هناك، لذا فإن الحل الكامل الوحيد هو استضافة مواقع الويب الخاصة بمستخدميك بنفسك (لا أعرف ما يكفي عن موقفك الأوسع لتحديد ما إذا كان هذا حلاً معقولاً حل).

ملحوظة:لن ينجح إعداد اسم مستعار على خادم الويب الخاص بك (المعروف أيضًا باسم إعادة كتابة عنوان url)، إلا إذا قمت باستضافة موقعهم بنفسك، حيث من الواضح أن الأشخاص الذين يتم جلبهم من نطاق المستخدم الخاص بك لن يصلوا إلى الخادم الخاص بك في المقام الأول.

اجعل الاسم المألوف لكل عميل يشير إلى عنوان IP الخارجي لخادم الويب الخاص بك.

استخدم IIS لحل الاسم المألوف المحدد في طلب رأس المضيف إلى موقع الويب المنطقي الذي تريد تسليمه إلى هذا الاسم المألوف.سوف يقوم IIS بكل سرور بتعيين كل من موقع الويب والمجلد الظاهري لنفس المجلد في نظام الملفات.إنشاء موقع إلكتروني لكل عميل.ثم قم بربط موقع الويب هذا بالاسم المألوف للعميل.

تذكر تعيين موقع الويب الافتراضي فقط لأسمك (أسماءك) المألوفة.إذا تركته في الوضع المختلط (المعين بـ "*") فلن تكون النتائج متوقعة.

لتعيين تعيين رأس المضيف

يختار موقع الويب الافتراضي تحت مواقع العقدة.في ال أجراءات الجزء في الأعلى انقر بزر الماوس الأيمن على الارتباطات... لفتح روابط الموقع الحوار.ستكون هناك قائمة بالارتباطات، ربما تحتوي على إدخال واحد يقول http * 80.حدد هذا وانقر فوق يحرر... زر.تعيين اسم المضيف إلى اسمك الودود.

يجري مدير IIS7 ولكل موقع عميل إنشاء موقع على شبكة الإنترنت تحت مواقع العقدة.قم بتعيين مسار الملف وربط رأس المضيف أثناء إنشاء كل موقع ويب.من الواضح أن ربط رأس المضيف (اسم المضيف) يجب أن يكون الاسم المألوف لذلك العميل.

ما عليك سوى إنشاء سجل جديد في إعداد خادم الويب الخاص بك tomsite.com مباشرةً إلى المسار mywebapp.com/user/tom/؟

انظر إليها مثل الاسم المستعار :)

بالطبع، نظرًا لأنك تعتمد على asp.net/windows، أعتقد أنه سيتعين عليك البحث بعمق في IIS لأتمتة هذا النوع من الأشياء.إذا كنت تستخدم Apache، فسيتم إضافة 3 أسطر بسيطة إلى httpd.conf.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top