كيف يمكنني التعامل بشكل مريح مع مضيفين مختلفين عندما يقوم Django بتشغيل Gunicorn خلف Apache؟

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

سؤال

لديّ تثبيت Django وأرغب في تشغيل إصدارات متعددة من نفس الموقع:نفس البيانات، ومحتوى ثابت مختلف، مع الهدف النهائي المتمثل في إظهار XYZ كما تم تنفيذه باستخدام أطر عمل JavaScript المختلفة.أرغب في تحميل صفحات رئيسية مختلفة، وتلك الصفحات تسحب محتواها الثابت المميز.(جميع المشاريع المقصودة هي منتجعات صحية.)

لقد قمت بتجربة الحل في كيف يمكنني الحصول على اسم المجال الخاص بموقعي ضمن قالب Django؟, ، ولكن في نظامي، لا يوفر الموقع الحالي اسم مضيف "pragmatometer.com"؛إنه يعطي اسم مضيف "المضيف المحلي: 8000"، لأن Django / Gunicorn يقدم الصفحات كمضيف محلي.لقد حاولت تحديد في /etc/hosts أن pragmatometer.com هو 127.0.0.1 وأن ​​لدي وكيل Apache لـ pragmatometer.com، ولكن أدى ذلك إلى حدوث خطأ.وهذا يترك المجال مفتوحًا أمام احتمال تشغيل مضيفين منفصلين على منافذ مختلفة، والتي يجب أن يتم تمثيلها كوكيل منفصل، أو جعل الصفحة الرئيسية تعيد التوجيه إلى صفحة مقصودة خاصة بعنوان URL، وهو حل من شأنه التضحية بعنوان URL النظيف لـ xyz.pragmatometer.com لتوضيح تنفيذ إطار XYZ.أرى طرقًا متعددة لربطها باستخدام جافا سكريبت، واحدة أو اثنتين فقط أود أن يراها رئيس المستقبل...

أرغب بشكل مثالي في الحصول على عناوين URL جذر متعددة للنطاقات (الفرعية) تسحب الصفحة الرئيسية الخاصة بالنطاق الفرعي و /load/*, /save/* إلخ.متسقة عبرها.أود أيضًا أن أجعل عنوان URL الجذر يسحب CSS وJavaScript الخاصين به، ولكن هذا سهل بدرجة كافية إذا تمكنت من جعل عنوان URL الجذر يعمل بشكل مناسب.

أفضل حل أراه حتى الآن هو وجود عمليات خادم منفصلة تستمع على نفس عنوان IP، ولكن وجود خوادم متماثلة تعمل على منافذ مختلفة ويتم توكيلها بواسطة Apache VirtualHosts مختلفين.إما ذلك أو باستخدام جافا سكريبت، يكتشف عنوان URL ويستبدل الصفحة بالفهرس "الحقيقي" للنطاق، والذي يحتوي على القليل من الرائحة.

تعليقات حول حل أفضل أو كيفية تنفيذ النية المذكورة أعلاه بشكل جيد؟

--يحرر--

أو طريقة أخرى قد تكون أكثر نظافة قليلاً:

احصل على صورة منزلية تقوم بتحميل محتويات /framework/ لكل إطار، ثم document.write() عليه بعد تم تحميل الصفحة بشكل كافٍ حتى يتمكن document.write() من تحطيم محتويات الصفحة الموجودة.

إذا استخدمت jQuery لتحميل الصفحة بهذه الطريقة، فهل سيترك ذلك أي تلوث من شأنه أن يتداخل مع أطر العمل التي تعمل بشكل مناسب؟

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

المحلول

مجموعتك تبدو مجنونة نوعًا ما.

انت تريد واحد خادم الويب مع Django والذي يمكن الوصول إليه عن طريق عديد المجالات.يؤدي كل مجال إلى قيام تطبيق Django بتقديم محتوى مختلف.هل فهمتك بشكل صحيح؟

إذا كانت الإجابة بنعم، فربما تنجح في استبدال Apache بـ Nginx.يمكنه حل اسم المضيف الطالب وتحديد كيفية إعادة توجيه الطلب:

ما الفرق بين $host و$http_host في Nginx

استضافة نطاقات متعددة مع مشروع Django واحد

تحديث

وثائق nginx ذات الصلة للتمييز بين أسماء المضيفين المختلفة:http://nginx.org/en/docs/http/request_processing.html http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name

وثائق nginx ذات الصلة لإضافة رؤوس الطلب:http://nginx.org/en/docs/http/ngx_http_headers_module.html#add_header

وانظر أيضا هذه الإجابة:إضافة واستخدام الرأس (HTTP) في nginx

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