Apache Linux (Apache HTTP Server 2.4)

Apache — служба запускается, но порт не слушается

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

Apache может отображаться как active (running), но не прослушивать ожидаемый порт, если в действующей конфигурации нет Listen, используется иной экземпляр/контейнер или порт закреплён за другим процессом. Сначала проверяйте локальные сокеты, затем сетевую доступность.

В этой статье
  1. Симптом и границы применимости
  2. Возможные причины и как их отличить
  3. Пошаговая диагностика и исправление
  4. Как проверить результат
  5. Если проблема не устранена

#Симптом и границы применимости

Apache может отображаться как active (running), но не прослушивать ожидаемый порт, если в действующей конфигурации нет Listen, используется иной экземпляр/контейнер или порт закреплён за другим процессом. Сначала проверяйте локальные сокеты, затем сетевую доступность.

#Возможные причины и как их отличить

Возможная причинаКак узнатьЧто делать
Неправильный Listen<VirtualHost *:443> сам по себе не создаёт прослушивающий порт.В действующих файлах нет Listen 443 либо указан другой адресНайти конфигурацию портов Apache
Порт занят Nginx или другим серверомВ схеме Nginx+Apache Apache нередко слушает только внутренний порт.ss показывает чужой процесс на 80/443Сопоставить архитектуру прокси
Служба запущена не из того файлаПанель может использовать отдельную сборку httpd.apache2ctl -S и ps указывают разные экземплярыСверить имя службы и бинарный файл

#Пошаговая диагностика и исправление

  1. Уточните порт и владельцаНайдите в панели/схеме сервера, какой порт должен слушать Apache: 80, 443, 8080, иной. Если спереди стоит Nginx, прямой порт 443 у Apache не нужен и попытка открыть его может нарушить архитектуру.
  1. Проверьте состояние процесса и портВ SSH Linux выполните статус службы и список прослушиваемых TCP-сокетов. В ss найдите порт и название процесса; если Nginx слушает 443, а Apache — 8080, это может быть правильная конфигурация.
  2. Debian имя apache2, RHEL — httpd
    Linux · Терминал (Bash)КомандаНужен sudo
    Debian имя apache2, RHEL — httpd. Только чтение.
    sudo systemctl status apache2 --no-pager; sudo ss -lntp
  1. Выведите список виртуальных хостов ApacheКоманда -S показывает, какие хосты и порты определены. Сверьте Listen в ports.conf или соответствующих включённых файлах: на Debian обычно /etc/apache2/ports.conf, на RHEL /etc/httpd/conf/httpd.conf. Ошибка Listen часто заметна при проверке синтаксиса.
  2. Дополнительная команда по теме
    Linux · Терминал (Bash)КомандаНужен sudo
    Пример Debian/Ubuntu; Syntax OK означает корректный синтаксис, но не гарантию прослушивания порта.
    sudo apache2ctl -S; sudo apache2ctl -t
  1. Сопоставьте Listen и VirtualHostПосмотрите в конфигурации Listen 80 или Listen 127.0.0.1:8080 и соответствующие <VirtualHost>. Важно: указание VirtualHost без Listen не обязует Apache открывать порт. Не копируйте Listen 443 из интернета, пока не проверите SSL и конфликт с Nginx.
  1. Проверьте журнал запускаВ момент последней загрузки найдите сообщения AH00072 make_sock: could not bind либо отсутствующий адрес. Если порт занят, выясните роль процесса и не завершайте его командой kill без оценки остальных сайтов.
  2. Дополнительная команда по теме
    Linux · Терминал (Bash)КомандаНужен sudo
    На RHEL заменить apache2 на httpd; сообщения старой загрузки могут относиться к предыдущей конфигурации.
    sudo journalctl -u apache2 -n 80 --no-pager
  1. Исправьте только нужный адрес прослушиванияПосле резервной копии измените Listen, если это действительно требуется схемой. Убедитесь, что нет второго Listen на той же комбинации адрес/порт, проверьте синтаксис. При ошибке верните копию и не выполняйте reload.
  2. Использовать в Debian; в RHEL httpd
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Использовать в Debian; в RHEL httpd. Изменение адреса/порта может требовать полного restart в зависимости от платформы и конфигурации.
    sudo apache2ctl -t && sudo systemctl reload apache2

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

  1. Проверьте локальный HTTP-ответВызовите запрос на локальный порт, указав имя нужного виртуального хоста (через заголовок Host для HTTP). Для TLS нужна правильная проверка SNI. Если порт слушается, но извне недоступен, переходите к проверке сети, а не повторному изменению Listen.
  2. Пример для внутреннего HTTP-порта 8080; замените порт на действительный
    Linux · Терминал (Bash)Команда
    Пример для внутреннего HTTP-порта 8080; замените порт на действительный.
    curl -I -H "Host: example.com" http://127.0.0.1:8080/

#Как проверить результат

В ss появился правильный слушатель и локальный запрос попадает в нужный VirtualHost. Соседние сайты на этом экземпляре и схема Nginx → Apache продолжают работать.

#Если проблема не устранена

При ошибке bind проверьте конфликт портов или отсутствие IP-интерфейса; при внешнем timeout диагностируйте брандмауэр и NAT. Не открывайте порт Apache в интернет, если его должен защищать Nginx.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.