Проверка порта 80 показывает, доступен ли твой веб-сервер по HTTP - протоколу, который браузеры используют по умолчанию, когда ты вводишь обычный URL без "https://". Если порт 80 заблокирован или не слушает входящие соединения, посетители получают ошибки подключения, и сайт перестаёт работать. Разберём, как именно диагностировать и устранить эту проблему.
Содержание
Для чего нужен порт 80
Порт 80 - это стандартный TCP-порт для
HTTP (HyperText Transfer Protocol)
. Когда браузер подключается к
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 не может определить состояние).
Через PowerShell на Windows
Test-NetConnection -ComputerName example.com -Port 80
Командлет
Test-NetConnection
возвращает чистое значение
TcpTestSucceeded : True
или
False
, что удобно для скриптов. Подробное руководство по проверке портов на Windows смотри в статье
проверка открытых портов на Windows
.
Проверка порта 80 через netstat
Находясь непосредственно на сервере, используй
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 брандмауэром
Блокировка брандмауэром - наиболее частая причина, по которой порт 80 выглядит закрытым снаружи, даже когда веб-сервер нормально работает локально. Блокировка может происходить на трёх уровнях:
| Уровень | Где проверять | Инструмент |
|---|---|---|
| Брандмауэр ОС (сервер) | iptables / ufw (Linux), Windows Defender Firewall |
iptables -L -n
или правила Windows Firewall
|
| Группа безопасности облака | AWS EC2 Security Groups, Azure NSG, GCP Firewall Rules | Входящие правила в консоли облака |
| Брандмауэр сети/провайдера | ACL роутера, блокировка порта провайдером | Обратиться к провайдеру или использовать внешний сканер портов |
Проверка iptables на Linux
sudo iptables -L INPUT -n -v | grep 80
Если видишь правило DROP или REJECT для порта 80 - это и есть причина проблемы. Чтобы разрешить порт 80 через ufw:
sudo ufw allow 80/tcp
sudo ufw reload
Проверка групп безопасности AWS
Если сервер работает на EC2, перейди в консоль EC2 - Security Groups - Inbound rules. Тебе нужно правило, разрешающее TCP-порт 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 снаружи сети
Тестирование с собственной машины может вводить в заблуждение: ты можешь находиться в той же локальной сети, что и сервер, обходя тем самым правила брандмауэра, которые применяются к внешнему трафику. Чтобы проверить доступность порта 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 challenge - certbot от Let's Encrypt использует порт 80 для подтверждения владения доменом. Если порт 80 заблокирован, выпуск сертификата завершится ошибкой.
- Внутренние сервисы без TLS - многие внутренние инструменты, агенты мониторинга и микросервисы общаются по обычному HTTP на порту 80 внутри приватной сети.
- Устаревшие клиенты и IoT-устройства - некоторые встраиваемые устройства и старые клиенты не поддерживают TLS и работают только через порт 80.
- Инфраструктура редиректов - даже если ты отдаёшь всё через HTTPS, порт 80 нужно держать открытым, чтобы перехватывать и перенаправлять HTTP-запросы, а не оставлять пользователей с ошибкой подключения.
Узнай прямо сейчас, что реально возвращает порт 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-порта 80. На облачном сервере добавь входящее правило в группу безопасности или сетевую группу безопасности, разрешающее TCP-порт 80 из нужного диапазона источников.
Порт 80 открыт, когда веб-сервер настроен на обслуживание HTTP-трафика - это стандарт для любого публичного сайта. Он также остаётся открытым на серверах, которые перенаправляют HTTP на HTTPS (порт 443), поскольку сам редирект требует принятия первоначального соединения на порту 80. Инструменты обновления сертификатов, такие как certbot от Let's Encrypt, также требуют порт 80 для HTTP-01 challenge при подтверждении владения доменом.
Открой Windows Defender Firewall с расширенной безопасностью, нажми «Правила для входящих подключений», затем «Создать правило». Выбери «Порт», укажи TCP, введи 80 в качестве конкретного локального порта, выбери «Разрешить подключение», примени ко всем профилям (Домен, Частный, Публичный) и задай имя правилу. Либо выполни следующую команду в 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 также необходим для HTTP-01 challenge при выпуске сертификатов Let's Encrypt. Для любого публичного сайта настоятельно рекомендуется порт 443 с TLS, а порт 80 следует держать открытым только для редиректов.
Нет, это разные порты. Порт 80 - стандарт HTTP, назначенный IANA, и браузеры обращаются к нему автоматически, когда порт не указан в URL. Порт 8000 - неофициальная альтернатива, широко используемая серверами разработки: встроенный HTTP-сервер Python
python -m http.server
по умолчанию использует именно 8000, как и сервер разработки Django. Чтобы обратиться к сервису на порту 8000, его нужно явно указать в URL:
http://example.com:8000
.