* كيف اسوي route لل domain بحيث افعل تحديثات ثم احوله على موقعي وهكذا * 1. * قم بإنشاء قاعدة (Rule) تمنع جميع الزوار وتعرض لهم صفحة التحديثات (Block). 3] * 2. بتعديل سجلات DNS (مثل GoDaddy أو Namecheap) قم بإعادة تغيير السجل ليربط بـ IP موقعك الأصلي. مع استثناء الآي بي الخاص بك. * بمجرد الانتهاء من التحديثات، [3, * إذا كنت تستخدم خدمات أمازون السحابية: * · 1970 M01 1 أم سيرفر خاص؟) com * [5] https://hostingtops. * [6] https://adviserhost. com com باستخدام Reverse Proxy (مثل Nginx) - "الخيار الاحترافي والمجاني" يمكنك تشغيل v1 على منفذ (Port 3000) وتشغيل v2 على منفذ (Port 4000) في نفس الوقت. * قم بتغيير سطر الـ proxy_pass من منفذ v1 إلى منفذ v2:# قبل التحديث * proxy_pass http://localhost:4000; يمكنك استخدام Origin Rules للتبديل بين السيرفرات دون الحاجة لتغيير الـ DNS الذي يأخذ وقتاً ليظهر للزوار: اذهب إلى حسابك في Cloudflare ثم RulesOrigin Rules. باستخدام ميزة الـ Slot في منصات الاستضافة الحديثة (مثل Vercel / Netlify / Azure) Next. أو Node. js ومستضاف على منصات سحابية: اضغط على زر Promote to Production أو Assign Domain للإصدار الجديد. باستخدام ميزة الـ Canary Deployments (في Kubernetes أو AWS) * إذا كان مشروعك ضخماً وتستخدم حاويات (Containers): * عندما تتأكد من استقراره، * · 1970 M01 1 * ما هي لغة البرمجة أو إطار العمل (Framework) المستخدم في تطبيقك؟ * —————— * أنا لدي دومين من كلاودفلير ايضاً استخدم next. * الطريقة الأولى: باستخدام Nginx على السيرفر (الخيار الأفضل والأكثر كفاءة) * بما أن السيرفر يشغل خدمات متعددة (Supabase, * خطوات التنفيذ: js الجديد على Port مختلف (مثلاً 3001)، * تحديث ملف إعدادات Nginx: افتح ملف الإعدادات الخاص بدومين الموقع (مثلاً في /etc/nginx/sites-available/):server { * location / { * # قم بتغيير البورت من 3000 إلى 3001 1; * } * التبديل اللحظي: قم بعمل إعادة تحميل لـ Nginx عبر الأمر:sudo systemctl reload nginx * خطوات التنفيذ: * Value: / (تعني تطبيق القاعدة على كامل الموقع) * نصيحة إضافية خاصة بـ Next. يُنصح بشدة باستخدام أداة PM2. لأننا لن نحتاج لتعديل أي إعدادات داخل لوحة تحكم Cloudflare في كل مرة، * الفكرة الأساسية (The Architecture) * بدلاً من جعل نفق Cloudflare يتصل بتطبيق Next. js مباشرة، * (تأكد من إضافة هذه الشبكة كـ external في ملفات compose الخاصة بك ليتصل الـ Tunnel بالموقع). js) إليك كيف تبدو الهيكلية: * services: * container_name: nextjs_v1 * image: my-nextjs-app:v2 * - PORT=3000 # يمكن أن يكون نفس البورت داخلياً لأن لكل حاوية IP منفصل * image: nginx:alpine * container_name: nginx_router /nginx. conf:ro * - my_global_network * depends_on: * - nextjs_v1 * networks: conf) * في نفس المجلد، * عندما يكون الموقع v1 هو الأساسي: * events {} * location / { * # نوجه الحركة إلى اسم حاوية v1 مباشرة عبر شبكة Docker * proxy_pass http://nextjs_v1:3000; * } * } * الفحص والتأكد: يمكنك الدخول للحاوية v2 وتجربتها داخلياً أو عبر Portainer للتأكد من اتصالها بـ Supabase بشكل سليم. تقوم الأداة تلقائياً بتشغيل الحاوية الجديدة، ثم تقوم بتبديل التوجيه داخل شبكة Docker تلقائياً وتقوم بحذف الحاوية القديمة دون تدخل منك ودون انقطاع نهائياً. * ———— * إليك مقارنة مباشرة توضح لك السبب: * داخل السيرفر (الأفضل): التبديل بأمر nginx -s reload يحدث داخل الذاكرة العشوائية (RAM) للسيرفر نفسه وفي أجزاء من الملي ثانية. يستغرق الأمر من 5 إلى 30 ثانية لتحديث البيانات وتعميمها على جميع خوادم كلافدفلير حول العالم (Edge Servers). خلال هذه الثواني، وعندما تضغط على زر التبديل في Nginx، أما التبديل من Cloudflare فهو أعمى ولا يضمن لك إن كانت الحاوية الجديدة تعمل بشكل صحيح داخلياً أم لا. * 3. ستضطر إلى تشغيل v2 على بورت جديد، وجعل نفق Cloudflare Tunnel يتصل بهذا البورت، واجعل Docker + Nginx في سيرفرك هو المسؤول عن إدارة وتوجيه حركة المرور الداخلية (Internal Routing). هل تحتاج مساعدتي في كتابة ملف الـ docker-compose المدمج الذي يجمع نفق Cloudflare الحالي مع حاوية الـ Nginx Router لتبدأ بتجربته فوراً؟ * في مرحلة التطوير (Development)، وإليك كيف تسير الأمور بشكل صحيح ومريح لك: * بما أنك تستخدم Next. أمامك طريقان: يُنصح بشدة برفع تطبيق Next. * تقوم بربط دومين Cloudflare بمنصة Vercel (مرة واحدة فقط). كل ما عليك فعله هو رفع التعديل إلى GitHub. ستقوم المنصة بتبديل الزوار إلى v2 تلقائياً وبشكل لحظي بمجرد أن يعمل الزائر Refresh لصفحته، ونربطه بنفق Cloudflare ليراه الناس. * نصيحة للمرحلة الحالية: طالما أن الاتصال بـ Supabase في السيرفر يعمل بدون مشاكل، * هل تفضل عند انتهاء المشروع أن ترفعه على منصة سحابية مثل Vercel (لتوفير جهد إدارة السيرفرات)، أم تفضل أن يكون داخل سيرفرك الخاص مع بقية الخدمات؟ * —————