في العديد من السيناريوهات في الوقت الحاضر ، أتقدم بطلب للحصول على مضيف VPS لاستضافة وتشغيل مشروع ويب. أنا لست استثناء. لقد اشتريت فوزًا صغيرًا 03 VPS للاستخدام. أثناء عملية الاستخدام ، نواجه مشكلة ، أي نفس النوع من بيئة الخادم على ما يرام - ولكن إذا تعايش ثلاثة أنواع من مشاريع الخادم مع PHP واحد ، واحد ASP ، و JSP واحد ، كيف ينبغي لنا تخصيص المنفذ الوحيد 80؟ نظرًا لأن مواقع الويب التجارية التجارية في كثير من الأحيان يمكن أن تشغل المنفذ 80 فقط. بالطبع ، إذا كنت تقوم فقط بالخدمات ، مثل الواجهات ، فإن استخدام الموانئ الأخرى لن يتعارض مع المنفذ 80. يواجه العديد من المطورين مشكلة المنفذ 80 ، وسيكون الوضع الفعلي محدودًا بالتكلفة. نظرًا لأن شراء VPS لمشروع وحده ليس اقتصاديًا ، وليس فعالًا من حيث التكلفة ، وليس من المناسب إدارته. لذلك ، يجب أن نفكر بعناية في كيفية توزيعها على خوادم متعددة مع توفير منفذ 80 ، مما يسمح للمضيفين المختلفين بتنفيذ مشاريع الويب الخاصة بكل منها.
عزيزي ، هل يمكننا أن نقول أن هذا الشرط يتحقق؟ نعم ، هذه ليست "تقنية سحرية" أو تقنية معقدة. أتساءل عما إذا كان لديك أي فهم لـ "الوكيل العكسي" في خدمات الشبكة ، واحدة من الوظائف هي إكمال توزيع المنافذ. قد نستخدم أيضًا اسم المجال كطريق لتوزيعه: سيتم توزيع أي طلب من قبل اسم مجال AA.com على منفذ PHP 82 للتنفيذ ؛ سيتم توزيع أي مطلوب من قبل اسم مجال BB.com على منفذ ASP 83 للتنفيذ ؛ ... وهلم جرا. بالطبع ، المنفذ هنا هو فقط للتعليمات. يمكنك تكوينه في الإرادة. على أي حال ، سيتم معالجة الطلب المستلم من المنفذ 80 أولاً ثم توزيعه. الوكيل العكسي ، من حيث Layman ، هو مجرد تحويل اليد اليسرى إلى اليد اليمنى.
كلما تم ذكر الوكيل العكسي ، عادة ما يفكر الناس في Nginx ، لكننا نتجاهل اليوم Nginx الشهير في الوقت الحالي ونستخدم NodeJs ، وهو شقيق من جانب الخادم يستخدم أيضًا حلقات الأحداث المفردة. بادئ ذي بدء ، تستخدم Node JS لبرمجة الخادم ، بدلاً من Nginx لكتابة التكوين أو LUA ، والتي تتماشى أكثر مع ذوقي. ثانياً ، أنا أكثر دراية بالعقدة ، ومن الأسهل تكوينه في جميع الجوانب.
حزمة Node-HTTP-Proxy التي تكمل هذه الوظيفة. للتنزيل والتثبيت ، يرجى الكتابة:
NPM تثبيت http-proxy
بعد اكتمال التثبيت ، قم بإنشاء ملف proxy.js جديد وأدخل:
var http = require ('http') ، httpproxy = require ('http-proxy') ؛ // قم بإنشاء كائن خادم وكيل وكيل جديد var proxy = httpproxy.createproxyserver ({}) ؛ "نوع المحتوى": "النص/عادي"}) ؛ // في كل طلب ، اتصل بالطريقة proxy.web (req ، res config) لطلب التوزيع إنشاء الخادم المخصص الخاص بك واتصل فقط `proxy.web ()` إلى الوكيل // طلب الويب إلى الهدف الذي تم تمريره في الخيارات // أيضًا) / يمكنك تحديد المنطق المخصص الخاص بك للتعامل مع الطلب. req.connection.RemoteadDress)) ؛إذا تحدثت عن تكلفة استخدام خادم وكيل ، فقد يكون ذلك يستهلك عمليات وحدة المعالجة المركزية أكثر من عدم استهلاك المزيد من الموارد.
مشكلة الاستخدام: لا يمكن تحديد مجلد proxy.web (req ، res ، {target: 'http://vevb.com:81/foo/'}) ؛