Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
Apache Error: AH00957: HTTP: attempt to connect to 127.0.0.1:8080 (localhost) failed Linux / DevOps

Apache Error AH00957: attempt to connect to backend failed — Решение

Обновлено: 18.08.2026  ·  Официальная база знаний

Apache возвращает клиенту статус 503 Service Unavailable или 502 Bad Gateway. В error.log фиксируется невозможность установить TCP-соединение с upstream сервером: [proxy:error] [pid 1234:tid 5678] (111)Connection refused: AH00957: HTTP: attempt to connect to 127.0.0.1:8080 (localhost) failed.

Системная ошибка ядраПричинаЧто проверяется
(111) Connection refusedБэкенд не запущен или слушает другой портСлужба бэкенда (Node, Python, Java, Docker) выключена
(13) Permission deniedSELinux блокирует исходящие сетевые сокетыБулева переменная httpd_can_network_connect
(110) Connection timed outСетевой экран (Firewall) дропает SYN пакетыБлокировка портов в ufw / firewalld
  • Веб-сервер не может связаться с нижележащим сервисом.
  • Браузер выводит сообщение «HTTP 503: The server is temporarily unable to service your request due to maintenance downtime or capacity problems».
  1. Проверьте, запущен ли целевой сервис и слушает ли он указанный порт:
    sudo ss -tulpn | grep :8080
    # Или с помощью curl локально:
    curl -I http://127.0.0.1:8080
  2. Если сервис выключен, запустите его и проверьте статус автозагрузки:
    sudo systemctl start my-backend-service
    sudo systemctl status my-backend-service
  3. Критично для RHEL/CentOS/AlmaLinux (SELinux): По умолчанию SELinux запрещает Apache любые исходящие сетевые подключения. Разрешите проксирование:
    sudo setsebool -P httpd_can_network_connect 1
    # Если проксирование идет на порт СУБД или кастомный сервис:
    sudo setsebool -P httpd_can_network_relay 1
  4. Если бэкенд запущен в Docker контейнере, убедитесь, что порт проброшен на хост (-p 127.0.0.1:8080:8080) или контейнеры находятся в общей сети.
  5. Проверьте локальный сетевой экран, разрешив трафик на локальном интерфейсе lo:
    # Для UFW:
    sudo ufw allow in on lo to 127.0.0.1 port 8080
    # Для Firewalld:
    sudo firewall-cmd --add-port=8080/tcp --permanent && sudo firewall-cmd --reload
  6. Перезагрузите веб-сервер: sudo systemctl reload apache2 # или httpd.
SELinux ловушка: Если в логе отображается (13)Permission denied: AH00957 при гарантированно работающем бэкенде — это 100% блокировка со стороны SELinux. Команда setsebool -P httpd_can_network_connect 1 решает проблему навсегда с сохранением правила после перезагрузки ОС.
Практический опыт инженера: Если бэкенд слушает адрес `127.0.0.1`, а Apache обращается по внешнему IP машины, бэкенд сбросит соединение. Убедитесь, что бэкенд слушает `0.0.0.0` или обращайтесь строго на loopback.

Частые вопросы (FAQ)

Что означает системная ошибка (111) Connection refused?

Код ECONNREFUSED означает, что ядро ОС отправило TCP RST в ответ на пакет SYN, так как на целевом IP-адресе и порту нет ни одной программы, слушающей сокет (служба не запущена).

Почему localhost может не работать в proxy_pass?

В некоторых конфигурациях localhost резолвится в IPv6 адрес ::1, тогда как бэкенд слушает только IPv4 127.0.0.1. Всегда указывайте явный IPv4 адрес: ProxyPass / http://127.0.0.1:8080/.

Как проверить настройки SELinux для Apache?

Выполните команду getsebool -a | grep httpd_can_network.

Что делать, если бэкенд работает через UNIX сокет?

Используйте синтаксис: ProxyPass / unix:/run/backend.sock|http://localhost/.