فحص المنفذ 80 - دليل استكشاف أخطاء HTTP وإصلاحها

دليل استكشاف أخطاء المنفذ 80 HTTP يعرض اتصالات الشبكة وأدوات تشخيص الخادم وإعدادات المنفذ

فحص المنفذ 80 يخبرك ما إذا كان خادم الويب لديك متاحاً عبر HTTP - البروتوكول الذي تستخدمه المتصفحات تلقائياً عند كتابة عنوان URL عادي بدون "https://". إذا كان المنفذ 80 محجوباً أو لا يستمع للاتصالات، سيحصل الزوار على أخطاء في الاتصال وسيتوقف موقعك عن العمل. إليك كيفية تشخيص المشكلة وإصلاحها بالتفصيل.

ما الذي يفعله المنفذ 80 فعلاً

المنفذ 80 هو منفذ TCP الافتراضي لبروتوكول HTTP (بروتوكول نقل النص التشعبي) . عندما يتصل متصفح بـ http://example.com ، فإنه يستهدف تلقائياً المنفذ 80 على عنوان IP الخاص بذلك الخادم. يجب أن يكون برنامج الخادم - سواء كان Apache أو Nginx أو IIS أو Caddy أو غيره - يستمع بشكل فعّال على المنفذ 80 حتى ينجح الاتصال.

المنفذ 80 معرّف في سجل المنافذ الرسمي لـ IANA ومُوحَّد في RFC 9110. وهو منفذ "معروف"، أي أن المنافذ من 0 إلى 1023 محجوزة لخدمات على مستوى النظام وتتطلب صلاحيات مرتفعة للارتباط بها على Linux/macOS.

كيف تتحقق من أن المنفذ 80 مفتوح

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

استخدام telnet

telnet هو أسرع اختبار يدوي. شغّل هذا الأمر من أي جهاز لديه وصول شبكي إلى المضيف المستهدف:

telnet example.com 80

إذا كان المنفذ 80 مفتوحاً وخادم الويب يستمع، ستظهر لك مؤشر فارغ أو بانر HTTP. أما إذا كان مغلقاً أو مفلتراً، ستحصل على "Connection refused" أو سيتجمد الأمر حتى انتهاء مهلة الاتصال.

استخدام curl

curl يعطيك تفاصيل أكثر - إذ يعرض استجابة HTTP الفعلية:

curl -v http://example.com

الراية -v تطبع مخرجات تفصيلية تشمل مصافحة TCP وترويسات الاستجابة. يُظهر الاتصال الناجح * Connected to example.com (93.184.216.34) port 80 ، بينما يُظهر الفاشل curl: (7) Failed to connect .

استخدام nmap

nmap هو المعيار الذهبي لفحص المنافذ. لاختبار المنفذ 80 تحديداً:

nmap -p 80 example.com

ستُظهر النتيجة إحدى ثلاث حالات: open (شيء ما يستمع)، أو closed (المنفذ قابل للوصول لكن لا شيء يستمع)، أو filtered (جدار ناري يُسقط الحزم ولا يستطيع nmap تحديد الحالة).

الفرق بين filtered وclosed: "filtered" يعني عادةً أن جداراً نارياً يُسقط الحزم بصمت. أما "closed" فيعني أن الخادم يرد بـ TCP RST - المنفذ قابل للوصول لكن لا توجد خدمة مرتبطة به. كل حالة تتطلب إصلاحاً مختلفاً.

استخدام PowerShell على Windows

Test-NetConnection -ComputerName example.com -Port 80

يُعيد الأمر Test-NetConnection في PowerShell قيمة TcpTestSucceeded : True أو False بشكل واضح، مما يسهّل كتابة السكريبتات. للاطلاع على دليل شامل حول فحص المنافذ على Windows، راجع التحقق من المنافذ المفتوحة على Windows .

استخدام netstat لفحص المنفذ 80

عندما تكون على الخادم نفسه، netstat يُظهر لك بالضبط أي عملية مرتبطة بالمنفذ 80. هذه هي الأداة المناسبة حين تحتاج إلى الإجابة على سؤال "هل هناك شيء يستمع فعلاً على المنفذ 80 على هذا الجهاز؟"

Linux / macOS

sudo netstat -tlnp | grep :80

شرح الرايات:

  • -t - اتصالات TCP فقط
  • -l - سوكيتات الاستماع فقط
  • -n - عرض العناوين الرقمية (أسرع، يتخطى بحث DNS)
  • -p - عرض اسم العملية وPID

نتيجة نموذجية تبدو هكذا: tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx . هذا يخبرك أن nginx (بـ PID 1234) يستمع على جميع الواجهات على المنفذ 80.

على أنظمة Linux الحديثة، ss أسرع ومفضّل على netstat :

sudo ss -tlnp | grep :80

Windows

netstat -ano | findstr :80

يسرد هذا الأمر جميع الاتصالات على المنفذ 80 مع PID الخاص بكل منها. للعثور على اسم العملية من PID معين (مثلاً PID 4892):

tasklist /fi "pid eq 4892"
المنفذ 80 مشغول بعملية غير متوقعة؟ على Windows، غالباً ما يستحوذ "System" (PID 4) على المنفذ 80 إذا كان IIS مثبتاً وقيد التشغيل. على Linux، إذا كانت عملية أخرى غير خادم الويب تشغل المنفذ 80، فلن يتمكن خادمك المقصود من البدء وسيظهر خطأ "address already in use".

تشخيص حجب المنفذ 80 بواسطة الجدار الناري

حجب الجدار الناري هو السبب الأكثر شيوعاً لظهور المنفذ 80 مغلقاً من الخارج حتى عندما يعمل خادم الويب بشكل طبيعي محلياً. هناك ثلاث طبقات يمكن أن يحدث فيها الحجب:

الطبقة أين تتحقق الأداة
جدار ناري على مستوى نظام التشغيل (الخادم) iptables / ufw (Linux)، Windows Defender Firewall iptables -L -n أو قواعد Windows Firewall
مجموعة أمان سحابية AWS EC2 Security Groups، Azure NSG، GCP Firewall Rules قواعد الاتصال الواردة في لوحة التحكم السحابية
جدار ناري على مستوى الشبكة/مزود الخدمة قائمة تحكم الوصول للراوتر، حجب المنافذ من مزود الإنترنت تواصل مع مزود الإنترنت أو استخدم فاحص منافذ خارجي

التحقق من iptables على Linux

sudo iptables -L INPUT -n -v | grep 80

إذا رأيت قاعدة DROP أو REJECT للمنفذ 80، فهذه هي المشكلة. للسماح بالمنفذ 80 عبر ufw:

sudo ufw allow 80/tcp
sudo ufw reload

التحقق من AWS Security Groups

إذا كان خادمك على EC2، انتقل إلى EC2 console - Security Groups - Inbound rules. تحتاج إلى قاعدة تسمح بـ TCP port 80 من 0.0.0.0/0 (أو نطاق IP المحدد لديك). بدون هذا، سيُسقط كل حركة مرور المنفذ 80 قبل أن تصل حتى إلى جدار الحماية على مستوى نظام التشغيل.

للاطلاع على تحليل أعمق لتشخيص المنافذ على جانب Linux، يغطي الدليل الكامل للتحقق من المنافذ المفتوحة على Linux كلاً من iptables وufw وfirewalld وnftables بالتفصيل.

المنفذ HTTP لا يستجيب: الأسباب الشائعة والحلول

عندما لا يستجيب منفذ HTTP، تقع المشكلة في إحدى هذه الفئات:

  • خادم الويب لا يعمل - تحقق باستخدام systemctl status nginx أو systemctl status apache2 . إذا كان متوقفاً، شغّله: sudo systemctl start nginx .
  • خادم الويب تعطّل عند البدء - تحقق من السجلات: sudo journalctl -u nginx --since "10 minutes ago" . سيتم تسجيل أي خطأ في صياغة الإعداد أو تعارض في المنافذ هنا.
  • الخادم مرتبط بـ localhost فقط - إذا كان إعداد خادمك يحدد listen 127.0.0.1:80 بدلاً من listen 0.0.0.0:80 ، فلن يقبل الاتصالات الخارجية. قم بتصحيح عنوان الربط في إعداد الخادم.
  • المنفذ 80 مشغول بالفعل - عملية أخرى استحوذت على المنفذ 80 قبل بدء خادم الويب. استخدم netstat لتحديدها، ثم أوقفها أو أعد تهيئة إحدى الخدمتين.
  • SELinux أو AppArmor يحجب الربط - على أنظمة RHEL/CentOS، قد يمنع SELinux عملية غير قياسية من الربط بالمنفذ 80. تحقق من ausearch -m AVC -ts recent بحثاً عن حالات الرفض.
فحص سريع للتحقق: شغّل curl http://127.0.0.1 مباشرةً على الخادم. إذا نجح ذلك لكن الاتصالات الخارجية تفشل، فالمشكلة في جدار الحماية أو قاعدة شبكية - وليس في خادم الويب نفسه.

اختبار اتصال المنفذ 80 من خارج شبكتك

الاختبار من جهازك الخاص قد يكون مضللاً - فقد تكون على نفس الشبكة المحلية (LAN) مع الخادم، متجاوزاً بذلك قواعد الجدار الناري المطبّقة على حركة المرور الخارجية. لاختبار اتصال المنفذ 80 كما سيختبره زائر حقيقي، تحتاج إلى اختبار خارجي.

يمكنك التحقق من ترويسات استجابة HTTP لخادمك من الخارج باستخدام أداة فحص ترويسات HTTP لدينا. تجلب الأداة الترويسات من عنوان URL الخاص بك وتُظهر بالضبط ما يتلقاه المتصفح - رموز الحالة، نوع الخادم، سلاسل إعادة التوجيه، والمزيد - وكل ذلك من نقطة مراقبة خارجية.

خيارات خارجية أخرى:

  • فاحصات المنافذ عبر الإنترنت - مواقع مثل portchecker.co أو canyouseeme.org تتيح لك إدخال عنوان IP ورقم المنفذ للاختبار من خوادمها.
  • من VPS أو واجهة سحابية - أنشئ نسخة سحابية مجانية في منطقة مختلفة وشغّل nc -zv your-server-ip 80 منها.
  • استخدام nc (netcat) محلياً - nc -zv example.com 80 يعطيك نتيجة سريعة بمفتوح/مغلق دون الحاجة لتثبيت أي شيء إضافي على معظم أنظمة Linux/macOS.

المنفذ 80 مقابل المنفذ 443: متى يهم كل منهما

المنفذ 443 يتعامل مع HTTPS (HTTP المشفّر عبر TLS). معظم المواقع الحديثة تُعيد توجيه حركة مرور المنفذ 80 بالكامل إلى المنفذ 443 فوراً. لكن المنفذ 80 لا يزال مهماً لأسباب عدة:

  • تحديات ACME/Let's Encrypt HTTP-01 - يستخدم certbot الخاص بـ Let's Encrypt المنفذ 80 للتحقق من ملكية النطاق. إذا كان المنفذ 80 محجوباً، ستفشل عملية إصدار الشهادة.
  • الخدمات الداخلية بدون TLS - كثير من الأدوات الداخلية ووكلاء المراقبة والميكروسيرفيسز تتواصل عبر HTTP العادي على المنفذ 80 داخل الشبكة الخاصة.
  • العملاء القديمة وأجهزة IoT - بعض الأجهزة المدمجة والعملاء الأقدم لا تدعم TLS وتعتمد على المنفذ 80.
  • بنية إعادة التوجيه - حتى لو كنت تقدّم كل شيء عبر HTTPS، تحتاج إلى إبقاء المنفذ 80 مفتوحاً لاستقبال طلبات HTTP وإعادة توجيهها بدلاً من ترك المستخدمين مع خطأ في الاتصال.
أفضل ممارسة: أبقِ المنفذ 80 مفتوحاً لكن اضبط خادم الويب ليُصدر إعادة توجيه دائمة 301 من HTTP إلى HTTPS. هذا يمنحك أمان TLS مع إبقاء المنفذ 80 فعّالاً لإعادة التوجيه وتجديد الشهادات.
أداة فحص ترويسات HTTP لاستكشاف أخطاء المنفذ 80

اعرف فوراً ما الذي يُعيده المنفذ 80 فعلاً

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

افحص ترويسات HTTP الآن →

على Linux، شغّل sudo ss -tlnp | grep :80 أو sudo netstat -tlnp | grep :80 . يعرض كلا الأمرين اسم العملية وPID المرتبط بالمنفذ 80. على Windows، استخدم netstat -ano | findstr :80 للحصول على PID، ثم tasklist /fi "pid eq [PID]" للعثور على اسم العملية. من أكثر العمليات شيوعاً على هذا المنفذ: nginx وapache2 وIIS وخوادم Node.js.

استخدم نفس أوامر netstat أو ss لكن مع تصفية 8080 بدلاً من ذلك: sudo ss -tlnp | grep :8080 على Linux، أو netstat -ano | findstr :8080 على Windows. المنفذ 8080 هو منفذ HTTP بديل شائع تستخدمه خوادم التطوير وTomcat وJenkins والبروكسيات. إذا كان شيء ما مرتبطاً به بالفعل، ستحتاج إلى إيقافه أو تهيئة خدمتك الجديدة لاستخدام منفذ مختلف.

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

من خارج الخادم، استخدم nmap -p 80 your-server-ip أو telnet your-server-ip 80 . من الخادم نفسه، استخدم ss -tlnp | grep :80 للتأكد من وجود شيء يستمع. تحقق أيضاً من قواعد جدار الحماية - على Linux مع ufw، شغّل sudo ufw status لمعرفة ما إذا كان المنفذ 80 مدرجاً كمسموح به.

على Linux مع ufw: sudo ufw allow 80/tcp . مع iptables مباشرةً: sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT . على Windows، أضف قاعدة واردة في Windows Defender Firewall لـ TCP port 80. على خادم سحابي، أضف قاعدة واردة في مجموعة الأمان أو مجموعة أمان الشبكة تسمح بـ TCP port 80 من نطاق المصدر المطلوب.

المنفذ 80 يكون مفتوحاً عندما يكون خادم الويب مُهيَّأ لخدمة حركة مرور HTTP، وهو المعيار لأي موقع عام. كما يبقى مفتوحاً على الخوادم التي تُعيد توجيه HTTP إلى HTTPS (المنفذ 443)، لأن إعادة التوجيه نفسها تتطلب قبول الاتصال الأولي على المنفذ 80. أدوات تجديد الشهادات مثل Let's Encrypt certbot تتطلب أيضاً المنفذ 80 لتحديات التحقق من النطاق HTTP-01.

افتح Windows Defender Firewall with Advanced Security، انقر على "Inbound Rules"، ثم "New Rule". اختر "Port"، حدد TCP، أدخل 80 كمنفذ محلي محدد، اختر "Allow the connection"، طبّق على جميع الملفات الشخصية (Domain وPrivate وPublic)، وأعطِ القاعدة اسماً. بديلاً عن ذلك، شغّل هذا في موجه PowerShell مرتفع الصلاحيات: New-NetFirewallRule -DisplayName "HTTP Port 80" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow .

نعم، على Linux وmacOS، المنفذ 80 هو منفذ مميز (المنافذ من 0 إلى 1023 تتطلب صلاحيات root أو قدرة CAP_NET_BIND_SERVICE للارتباط بها). هذا يعني أن عملية المستخدم العادي لا تستطيع الاستماع على المنفذ 80 دون صلاحيات مرتفعة. خوادم الويب مثل nginx وApache تُشغَّل عادةً كـ root للارتباط بالمنفذ 80، ثم تنتقل إلى مستخدم ذي صلاحيات أقل لمعالجة الطلبات. على Windows، لا يوجد قيد مماثل للمنفذ 80.

يُستخدم المنفذ 80 (HTTP) بدلاً من 443 (HTTPS) في سيناريوهات يكون فيها TLS غير ضروري أو غير عملي - مثل الميكروسيرفيسز الداخلية على شبكة خاصة موثوقة، أو بيئات التطوير المحلية، أو أجهزة IoT التي لا تدعم TLS. المنفذ 80 مطلوب أيضاً لتحديات شهادات Let's Encrypt HTTP-01. لأي موقع عام، يُفضَّل بشدة المنفذ 443 مع TLS، مع إبقاء المنفذ 80 مفتوحاً فقط لإعادة التوجيه.

لا، إنهما منفذان مختلفان. المنفذ 80 هو المعيار المخصص من IANA لـ HTTP وتستخدمه المتصفحات تلقائياً عند عدم تحديد منفذ. المنفذ 8000 هو بديل غير رسمي يُستخدم بشكل شائع في خوادم التطوير - خادم Python python -m http.server يستخدم 8000 افتراضياً، وكذلك خادم تطوير Django. للوصول إلى خدمة على المنفذ 8000، يجب تحديده صراحةً في URL: http://example.com:8000 .