سؤال

أواجه مشكلة صغيرة في نهاية دليل البدء ل vagrant.أنا أعمل على صندوق أساسي CentOS يعمل عليه Apache2 (يتم توفيره عبر Puppet).لقد قمت بإعداد إعادة توجيه المنفذ لطلبات الويب باستخدام السطر التالي Vagrantfile:

 config.vm.forward_port "web", 80, 4567

ولكن عندما أقوم بتقديم طلبات إلى هذا المنفذ، فإنها تفشل.الخطأ الذي أبلغ عنه Safari هو "لا يمكن لـ Safari فتح الصفحة "http://localhost:4567/" لأن الخادم قام بقطع الاتصال بشكل غير متوقع."

لقد فعلت ذلك ل vagrant reload ورأيت "[افتراضي] -- الويب:80 => 4567 (المحول 1)" في التمرير، فأين يجب أن أبدأ في استكشاف أخطاء هذا الأمر وإصلاحها؟شكرًا.

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

المحلول

سأجعل من هذا إجابة فعلية بدلاً من مجرد المزيد من التعليقات.

اول شيء:يحاول curl 'http://localhost:80' من داخل VM.إذا لم ينجح ذلك، فهذا بالتأكيد ليس إعادة توجيه المنفذ.

التالي:يحاول curl -v 'http://localhost:4567/' من جهازك المضيفقد يمنحك Curl رسالة خطأ أفضل من Safari.

سأتأكد من عدم وجود جدران حماية تم إعدادها لتقييد الوصول إلى المنفذ 80.لا يأتي Vagrant VM (Ubuntu) الافتراضي مزودًا بجدار حماية، لكنك قلت أنك تستخدم شيئًا آخر، لذا قد يكون من المفيد التحقق منه.

إذا لم يكن الأمر كذلك، فحاول إنشاء شيء آخر غير Apache المدرج في المنفذ 80.تأتي Python مع خادم HTTP بسيط يمكنك استخدامه - انتقل إلى المجلد الذي به index.html و اهرب sudo python -m SimpleHTTPServer 80, ، ثم حاول ضرب ذلك باللف من كلا الصندوقين.إذا نجح ذلك، فمن المحتمل أن تكون مشكلة في تكوين Apache.ليس لدي خبرة كافية مع Apache للمساعدة إذا كان هذا هو الحال (أستخدم nginx).

نصائح أخرى

أردت إضافة ملاحظة إضافية مفادها أن هذا غالبًا ما يحدث بسبب الخادم الموجود داخل الجهاز الافتراضي لأنه يرتبط بـ 127.0.0.1, ، وهو الاسترجاع.ستحتاج إلى التأكد من أن الخادم مرتبط بـ 0.0.0.0 بحيث يمكن لجميع الواجهات الوصول إليه.

بعض خوادم التطبيقات المضمنة مثل خوادم تطوير Django وبعض خوادم Ruby هي الافتراضية 127.0.0.1 افتراضيًا، فهذا شيء يجب الانتباه إليه.

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

لقد واجهت نفس المشكلة على CentOS 6.3 w/NGINX ووجدت الإجابة موجودة في iptables في المربع المتشرد.

من bash on the vagrant box، اتبع الخطوات التالية:

قم أولاً بإدراج قواعد iptable الحالية

iptables -L -v

ثم قم بمسح القواعد الحالية:

iptables -F

السماح باتصالات SSH على منفذ TCP 22

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

قم بتعيين السياسات الافتراضية لسلاسل INPUT وFORWARD وOUTPUT

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

تعيين الوصول للمضيف المحلي

iptables -A INPUT -i lo -j ACCEPT

قبول الحزم التابعة للاتصالات القائمة وذات الصلة

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

احفظ التغييرات

/sbin/service iptables save

قائمة القواعد المعدلة

iptables -L -v

قم بلف المضيف المحلي:[port#] أو اضغط عليه في متصفحك من الخارج

تم العثور على مزيد من المعلومات حول تكوينات CentOS iptable هنا:

http://wiki.centos.org/HowTos/Network/IPTables

حظ سعيد.

الحل الأفضل بالنسبة لي هو تعطيل جدار الحماية

service iptables stop
chkconfig iptables off

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

$ curl -v http://localhost:6789

وحصلت

<HTML>
<HEAD><TITLE>Redirection</TITLE></HEAD>
<BODY><H1>Redirect</H1></BODY>

ثم استخدمت عنوان IP بدلاً من ذلك، وحصلت على رسالة html الصحيحة.

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