Apache و IIS جنبا إلى جنب (سواء الاستماع إلى المنفذ 80) على windows2003

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

سؤال

ما هي بعض الطرق للقيام بذلك ؟ هل من الممكن أن تفعل نظيفة?

ومن الناحية المثالية كنت ترغب في استخدام رؤوس الحزم أن تقرر أي الخادم يجب التعامل مع الطلبات.ومع ذلك ، إذا كان هناك طريقة أسهل/أفضل اسمحوا لي أن أعرف.

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

المحلول

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

وبالتالي سوف تحتاج حلا لتحقيق ما تريد.أسهل وربما تشغيل أباتشي على IP الأساسي الخاص بك/ميناء الجمع ، ويكون ذلك الطريق طلبات IIS (الذي يجب أن يكون تكوين IP مختلفة و/أو المنفذ) باستخدام mod_rewrite.

نضع في اعتبارنا أن البديل IP و port IIS يعمل على أن تكون قابلة للوصول إلى العملاء الاتصال إلى الملقم الخاص بك:إذا كان لديك عنوان IP واحد المتاحة ، يجب الحرص على اختيار IIS المنفذ الذي لا عموما حظره بواسطة جدران الحماية (8080 قد يكون خيارا جيدا ، أو 443 ، حتى ولو كنت تقوم بتشغيل HTTP العادية وليس SSL)

P. S.كما يرجى ملاحظة أنك لا تحتاج إلى تعديل IIS التكوين الافتراضي باستخدام httpcfg قبل أن تسمح ملقمات أخرى أن تعمل على المنفذ 80 على أي عنوان IP على نفس الخادم:انظر ميكي ماكواد الجواب لهذا الإجراء أن تفعل ذلك...

نصائح أخرى

وجدت هذا المنصب الذي اقترح أن يكون اثنين من عناوين IP منفصلة بحيث يمكن الاستماع على المنفذ 80.

كان هناك تحذير من تغيير في IIS بسبب تجمع مأخذ التوصيل.هنا التعليمات استنادا إلى الرابط أعلاه:

  1. استخراج httpcfg.exe أداة من أدوات دعم المنطقة على Win2003 CD.
  2. إيقاف كافة خدمات IIS: net stop http /y
  3. يكون لديك IIS الاستماع فقط على عنوان IP كنت المخصصة IIS: httpcfg set iplisten -i 192.168.1.253
  4. تأكد من: httpcfg query iplisten (IPs المذكورة هي فقط عناوين IP التي IIS سيتم الاستماع على أي شيء آخر.)
  5. إعادة تشغيل خدمات IIS: net start w3svc
  6. بدء أباتشي الخدمة

للناس فقط عنوان IP واحد و مواقع متعددة على ملقم واحد, يمكنك تكوين IIS الاستماع على منفذ أخرى من 80, ه.ز 8080 عن طريق تعيين منفذ TCP في خصائص كل من المواقع (بما في ذلك الافتراضية واحدة).

في مقاطعة أباتشي ، تمكين mod_proxy و mod_proxy_http, ثم نضيف التقاط كل VirtualHost (بعد كل الآخرين) بحيث طلبات أباتشي لا صراحة التعامل مع الحصول على "توجيه" في IIS.

<VirtualHost *:80>
    ServerName foo.bar
    ServerAlias *
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8080/
</VirtualHost>

الآن هل يمكن أن يكون أباتشي تخدم بعض مواقع IIS خدمة الآخرين ، مع عدم وجود فرق واضح للمستخدم.

تحرير: IIS المواقع يجب أن تتضمن رقم المنفذ في أي عناوين في ردودهم ، بما في ذلك رؤوس.

تحتاج على الأقل mod_proxy و mod_proxy_http وكلاهما جزء من التوزيع (ولكن ليس في كل مرة بنيت تلقائيا).ثم يمكنك إلقاء نظرة هنا: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

أبسط التكوين في virtualhost السياق هو:

ProxyPass         /winapp http://127.0.0.1:8080/somedir/

ProxyPassReverse  /winapp http://127.0.0.1:8080/somedir/

(اعتمادا على webapp الفعلي التكوين قد أصبحت أكثر تطورا.) بشفافية الموجهات كل طلب على طريق winapp/ إلى نظام التشغيل windows server ونقل الناتج مرة أخرى إلى العميل.

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

<a href=../pics/mypic.jpg">

بدلا من المعتاد التكامل كابوس كل رابط يجري المطلق:

<a href="http://myinternalhostname/somedir/crappydesign.jpg">

هذا الأخير هو سيء تقريبا في كل مرة!

من أجل إعادة كتابة الروابط في الصفحات هناك mod_proxy_html (لا تخلط مع mod_proxy_http!) ولكن تلك قصة أخرى و قاسية أيضا.

إما اثنين من عناوين IP مختلفة (مثل مستحسن) أو ملقم ويب عكس إنشاء الوكلاء الآخر (الذي هو الاستماع على منفذ <>80).

على سبيل المثال:أباتشي يستمع على المنفذ 80 ، IIS على المنفذ 8080.كل طلب http يذهب إلى أباتشي الأولى (بالطبع).ثم يمكنك أن تقرر إحالة كل طلب معين (اسمه الظاهري) المجال أو كل طلب يحتوي على دليل معين (مثلا ، http://www.example.com/winapp/) إلى IIS.

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

السلبيات:بعض webapps هي crappily تصميم الألم الحقيقي في الحمار إلى الاندماج في عكس الوكيل البنية التحتية.عمل IIS webapp تعتمد على العامل أباتشي ، لذلك لدينا بعض بين التبعيات.

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

httpd.conf Apache ترك الاستماع بورت 80 و 'اسم الخادم' كما FQDN/IP :80.

الآن IIS تذهب إلى الخدمات الإدارية > "إدارة IIS" > 'المواقع' في اليد اليسرى الملاحة المنسدلة > في نافذة اختر السطر العلوي (موقع ويب الافتراضي) ثم ربط على اليمين.

الآن حدد http > تعديل و تغيير 81 وأدخل المحلي الخاص بك IP للملقم/pc و في المجال أدخل إما FQDN (www.domain.com) أو IP الخارجي قريب.

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

هذا يبدو ينضب طويلة ولكن حرفيا استغرق 5 دقائق من اللعب عنه.يعمل تماما.

النظام:ويندوز 8 ، IIS 8 ، اباتشي 2.2

تثبيت ويندوز 10 كان لي هذه المشكلة:أباتشي(ipv4) و خدمة التخزين المؤقت(ipv6) الاستماع نفس 80 الميناء.

وأصررت على تحرير أباتشي httpd.الملف conf تغيير الخط

الاستماع 80

إلى

الاستماع 127.0.0.1:80

هذا ليس صحيحا تماما.E. g.HTTP ويندوز يدعم URL بناء ميناء تقاسم ، مما يتيح عمليات متعددة استخدام نفس عنوان IP والمنفذ.

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

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