هل من الممكن استخدام عامل ميناء لفصل مواقع الويب للمستخدمين?

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

من ما أفهمه ، يمكنك فضح مثيل عامل الميناء عبر منافذها، لذلك إذا قمت بتشغيل اثنين من مثيل عامل الميناء على نفس الخادم ، سيكون لديك لفضح اثنين من منافذ مختلفة.

ولكن هل من الممكن تصدير ليس الموانئ ، ولكن اسم الخادم، مثل :

  • www.somewebsite.com : عامل الميناء المثال 1
  • www.otherwebsite.com : عامل الميناء المثال 2
  • www.etc.com : مثيل عامل الميناء ...

وهذا ، في نفس الخادم.

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

هل هذا ممكن وعلاوة على ذلك, هل هذا مثير للاهتمام من حيث الأداء (أو لا على الإطلاق)?

شكرا لكم على مساعدتكم.

نعم ، هذا ممكن. ما عليك القيام به هو توفير عدة منافذ 80. واحد لكل عناوين المواقع. يمكنك القيام بذلك باستخدام ، على سبيل المثال المضيف الظاهري من أباتشي تعمل على خادم المضيف عامل الميناء.

  1. تعيين اسم نظام أسماء النطاقات.
  2. قم بتشغيل مثيلات عامل الإرساء وقم بتعيين المنفذ 80 إلى المنفذ ، على سبيل المثال ، 12345~12347 لمضيف عامل الإرساء.
  3. تشغيل خادم أباتشي على المضيف عامل الميناء وتعيين مضيف ظاهري لكل ورل وتعيين بروكسيباس و بروكسيباسريفيرس إلى لوكالهوست: 12345 التي هي واحدة من مثيلات عامل الميناء الخاص بك.

سوف أباتشي ملف التكوين تبدو مثل هذا:

<VirtualHost *:80>ServerName www.somewebsite.com  <Proxy *>    Allow from localhost  </Proxy>  ProxyPass        / http://local.hostname.ofDockerHost:12345/  ProxyPassReverse / http://local.hostname.ofDockerHost:12345/</VirtualHost>

وأنا أعلم أن هذا قد تم بالفعل الإجابة ولكن أردت أن أعتبر خطوة أخرى إلى الأمام وتظهر لك مثالا على كيف يمكن القيام بذلك ، لتقديم إجابة أكثر اكتمالا.

يرجى الاطلاع على صورة عامل الميناء هنا مع تعليمات حول كيفية استخدامها ، وهذا سوف تظهر لك كيفية تكوين موقعينhttps://hub.docker.com/r/vect0r/httpd-proxy/

كما قال جيهون سيكون لديك للتأكد من أن لديك مجموعة التكوين فوست الخاص بك. يستخدم المثال الخاص بي المنفذ 80 لعرض موقع اختبار example.com و 81 لعرض موقع الاختبار example2.com. من المهم أيضا ملاحظة أنك ستحتاج إلى تحديد المحتوى الخاص بك وفضح المنافذ المطلوبة في ملف الإرساء الخاص بك ، مثل هذا;

FROM centos:latestMaintainer vect0rLABEL Vendor="CentOS"RUN yum -y update && yum clean allRUN yum -y install httpd && yum clean allEXPOSE 80 81#Simple startup script to aviod some issues observed with container restartADD run-httpd.sh /run-httpd.shRUN chmod -v +x /run-httpd.sh#Copy config file acrossCOPY ./httpd.conf /etc/httpd/conf/httpd.confCOPY ./example.com /var/www/example.comCOPY ./example2.com /var/www/example2.comCOPY ./sites-available /etc/httpd/sites-availableCOPY ./sites-enabled /etc/httpd/sites-enabledCMD ["/run-httpd.sh"]

آمل أن يساعد هذا في تفسير العملية قليلا. لا تتردد في تسألني أي أسئلة أخرى حول هذا الموضوع ، سعيد للمساعدة.

التحيات,

V

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

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

في حالتي كنت بحاجة لإضافة سسلبروكسينجين على, بروكسيبرسيرفيهوست على و ريسستهيدر تعيين الواجهة الأمامية-هتبس "أون" إلى ملف أباتشي 2.4 فوست ، لأنني أردت تمكين سل على حاوية عامل الميناء. حول ال محلي.اسم المضيف.أوفدوكرهوست، في حالتي كان اسم الخادم المضيف الذي يقوم بتشغيل حاوية عامل الإرساء لوكاس، وكان المنفذ المعين إلى المنفذ 443 من حاوية عامل الميناء 1443 (لأن المنفذ 443 كان قيد الاستخدام بالفعل من قبل أباتشي في الخادم المضيف) ، لذلك انتهى هذا الخط بهذه الطريقة https://lucas:1443/

هذا هو الإعداد النهائي ، وهو يعمل بشكل جيد!

<VirtualHost *:443> # Change to *:80 if no https required    ServerName www.somewebsite.com    <Proxy *>        Allow from localhost    </Proxy>    SSLProxyEngine On # Comment this out if no https required    RequestHeader set Front-End-Https "On" # Comment this out if no https required    ProxyPreserveHost    On    ProxyPass        / http://local.hostname.ofDockerHost:12345/    ProxyPassReverse / http://local.hostname.ofDockerHost:12345/</VirtualHost>

وأخيرا،في حاوية عامل الميناء كان لدي لإعداد رؤوس سل وكيل. في حالتي ، كانت الحاوية تعمل نجينكس وشيء يسمى الكل لإعداد تطبيقات روبي. وأعتقد أن هذا يمكن أن يكون الإعداد في ملف التكوين إنجن إكس كذلك. سوف تدونها كما هو فقط في حالة شخص ما تجد هذه مفيدة

nginx['redirect_http_to_https'] = truenginx['proxy_set_headers'] = {    "Host" => "$http_host",    "X-Real-IP" => "$remote_addr",    "X-Forwarded-For" => "$proxy_add_x_forwarded_for",    "X-Forwarded-Proto" => "https",    "X-Forwarded-Ssl" => "on"}nginx['real_ip_trusted_addresses'] = ['10.0.0.77'] # IP for lucas hostnginx['real_ip_header'] = 'X-Real-IP'nginx['real_ip_recursive'] = 'on'

الدليل الكامل لأباتشي ، مزود خدمة الإنترنت التكوين ، خادم أوبونتو 16.04 هنا https://www.howtoforge.com/community/threads/subdomain-or-subfolder-route-requests-to-running-docker-image.73845/#post-347744

من الناحية النظرية فمن الممكن ، أباتشي سوف تفعل بروكسيباس نحو ميناء كل مثيل عامل الميناء يستمع.