Apache Linux (Apache HTTP Server 2.4)

Apache: сервис работает с локального адреса, но недоступен из интернета

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

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

Apache нормально отвечает на локальный curl, но домен не открывается из интернета. Локальная проверка не проверяет DNS, внешние сетевые правила, маршрутизатор, NAT, балансировщик и доступность IPv4/IPv6; настройку Listen нужно сверить с архитектурой.

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

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

Apache нормально отвечает на локальный curl, но домен не открывается из интернета. Локальная проверка не проверяет DNS, внешние сетевые правила, маршрутизатор, NAT, балансировщик и доступность IPv4/IPv6; настройку Listen нужно сверить с архитектурой.

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

Возможная причинаКак узнатьЧто делать
Слушает только loopbackПри наличии Nginx-прокси внутренний Apache может намеренно слушать только loopback.ss показывает 127.0.0.1:80 или [::1]:80Установить, нужен ли прямой внешний доступ
Внешний порт заблокированОткрытие на уровне Apache не разрешает входящий трафик в сети.Локальный запрос успешен, внешний TCP-тест не соединяетсяПроверить облачный firewall, NAT и сетевой экран Linux
DNS ведёт к другому узлуЛокальный тест по 127.0.0.1 не проверяет маршрутизацию домена.A/AAAA не совпадают с опубликованным IPСверить DNS с публичным адресом сервера/балансировщика

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

  1. Разделите ошибку соединения и HTTP-кодОткройте сайт с мобильной сети, не подключённой к Wi-Fi сервера. Ошибка соединения, тайм-аут, 403 и неверный сертификат требуют разных проверок. Зафиксируйте время, домен, порт и семейство адресов. Не меняйте правила безопасности до определения точки отказа.
  1. Посмотрите, что реально слушает серверПо SSH проверьте TCP-сокеты и сопоставьте PID с Apache/Nginx. Состояние LISTEN на 127.0.0.1 означает локальный приём; 0.0.0.0 — все IPv4-адреса (если политики не препятствуют). Если Apache стоит за Nginx, внешние 80/443 обязан слушать именно внешний компонент.
  2. Команда для Linux; в контейнере сетевые пространства имён могут различаться
    Linux · Терминал (Bash)КомандаНужен sudo
    Команда для Linux; в контейнере сетевые пространства имён могут различаться.
    sudo ss -lntp | grep -E ":(80|443|8080)\b"
  1. Проверьте активные Listen и VirtualHostВыполните синтаксический тест и вывод виртуальных хостов, затем выясните, должен ли Apache принимать прямые внешние подключения. Не меняйте Listen localhost на публичный IP, если панель использует Apache за Nginx — это может открыть обход защиты.
  2. Проверки только чтение; Debian/Ubuntu
    Linux · Терминал (Bash)КомандаНужен sudo
    Проверки только чтение; Debian/Ubuntu.
    sudo apache2ctl configtest; sudo apache2ctl -S
  1. Проверьте публичные адреса и DNSНа внешнем устройстве посмотрите записи A и AAAA, сравните с адресом балансировщика либо внешним адресом сервера, указанным в панели. Если AAAA старый, посетители IPv6 могут попадать на другой хост.
  2. Команды для клиентского терминала с dig; замените домен
    Linux · Терминал (Bash)Команда
    Команды для клиентского терминала с dig; замените домен.
    dig +short A example.com; dig +short AAAA example.com
  1. Проверьте сетевые правила без отключения экранаНа сервере прочитайте nftables, в панели провайдера — входящие правила нужного IP/порта. Если есть домашний маршрутизатор — проверьте перенаправление портов и наличие публичного адреса; при CGNAT проброс может быть невозможен. Не открывайте внутренний 8080, если он должен быть доступен только Nginx.
  2. Только чтение
    Linux · Терминал (Bash)КомандаНужен sudo
    Только чтение. Открывайте только необходимые внешние порты по принятой схеме.
    sudo nft list ruleset
  1. Проверьте результат снаружиПосле адресной корректировки повторите запрос с независимого подключения и сравните код, сертификат и IP назначения. При изменении конфигурации Apache выполните configtest перед reload; если изменение только в DNS, дождитесь обновления кэша записей, не перезапуская Apache.

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

С внешней сети по домену доступен ожидаемый виртуальный хост, сертификат соответствует имени, IPv4/IPv6 ведут на нужные узлы; служебный внутренний порт не открыт наружу без необходимости.

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

Если локальные и внешние проверки расходятся, отследите путь DNS → балансировщик/CDN → межсетевой экран → Apache. Попросите провайдера проверить маршрутизацию при отсутствии публичного адреса.

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

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

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