Эта статья поможет разобраться, почему на сайтах время от времени появляется ошибка 502 Bad Gateway nginx (HTTP Error 502) и как эту проблему решить.
Если вы не можете попасть на сайт из-за ошибки 502, сделать можно не так много:
Если эта ошибка возникает, значит HTTP-запросы от посетителей к вашему сайту идут через так называемый «шлюз», программу-посредник. Например, если на хостинге перед веб-сервером Apache стоит веб-сервер nginx, то nginx будет шлюзом.
502-ая ошибка означает, что запрос от клиента прошел nginx, попал к Apache, и Apache не смог запрос обработать, о чем сообщил nginx’у. В результате nginx отдает клиенту ошибку.
Если PHP работает в режиме FastCGI, то любой веб-сервер перед ним будет шлюзом.
Почему Apache не смог обработать запрос? Как это исправить?
Скорее всего, если сайт раньше работал, а теперь не открывается, дело не в ошибках конфигурации среды. Причина может быть в нехватке ресурсов сервера, и, следовательно, в невозможности обслужить всех клиентов. В частности, проблема может быть в нехватке оперативной памяти. Или вы можете упираться в какое-то ограничение, например, на количество процессов. Иногда Apache или ваше приложение могут периодически падать/перезапускаться, в эти моменты фронт-серверу тоже ничего не остаётся, кроме как отдавать ошибку 502. Такое может случиться и на VPS, и на shared-хостинге.
Возможен случай, когда ошибка 502 постоянная, возникла на этапе настройки сервера. Его сейчас подробно рассматривать не будем. Скорее всего, фронт-сервер и то, что находится за ним, не состыкованы. Или вообще Apache не запущен.
Если PHP работает через FastCGI, то на сервере может не хватать php-cgi процессов в моменты, когда на сайте много посетителей, пришел прожорливый бот, кто-то скачивает ваш сайт целиком или идёт DoS-атака. Веб-серверу нужно бы запустить дополнительные процессы, но памяти под них уже нет. Значит, нужно добавить памяти либо оптимизировать расход доступной
Если дело в нехватке памяти, то в логах будут ошибки OOM (out of memory). Когда ОС очень нужна память, то ядро может попытаться освободить её при помощи механизма OOM killer, просто убивая активные процессы. Например, здесь пришлось пожертвовать Апачем:
Out of memory: kill process 1718 (apache2) score 56789 or a child
Killed process 22504 (apache2)
Другой случай - когда, Apache периодически падает/перезапускается независимо от текущей нагрузки на сайт. В error.log может быть написано:
[core:notice] [pid 5795] AH00052: child pid 5858 exit signal Segmentation fault (11)
[mpm_prefork:notice] [pid 5795] AH00169: caught SIGTERM, shutting down
Если это происходит со строгой периодичностью, то нужно поискать связь с другими процессами с похожим расписанием. Например, со службой мониторинга или задачами в кроне.
Комментарии
млин... непонятно.. объясните популярно, как исправить эту проблему
В большинстве случаев нужно просто ждать, когда нагрузка на сервер упадет или администратор сервера решит проблему.
В большинстве случаев достаточно перезагрузить Апач, но если это не помогает, то проблема с инетом.
А если к серверу подключен 1 человек, а ошибка всё равно появляется,
причем без nginx'a всё работало?
мб, что-нибудь с конфигурацией энджинкса
У меня стоит опера и если выдает эту ошибку , просто включаю Опера-Турбо и все отлично грузится -)))
Просто издевательство какое-то. Взял недешевый хостинг, залил сайт и теперь началась эта проблема... Написал в техподдержку,хостеры пока молчат - первый признак того что они накосячили...
У меня была такая проблема, просто у меня слишком много мегабайт информации загружалось на главной странице, до 100 мб. и стала вылазить такая ошибка, ужал картинки, всё пошло нормально
М-да,никто меня не любит гляжу!
а это могут быть это ДДос атаки?
Да, такое бывает и при атаках.
только не забывайте, что возможно не в хостинге дело, а именно в вашем сайте и пора покупать сервер
А где копать, если имеется выделенный сервер, на нем куча своих сайтов, а 502 выдает только один из них?
Анализировать логи.
Я простой пользователь. Не является ли появление ошибки 502 - признаком индивидуального бана? Как вообще определить наличие бана, если никаких сообщений об оном не было
Если бан, то скорее будет 503
Как вариант - это так же может происходить из-за "Атаки ДДОС". Сегодня несколько раз натыкался на сайты, в которых присутствовали следующие строки:
"""2 Дня подряд сайт подвержен крупной Атаке ДДОС!
Атака на сайт может производиться с разными мотивами, но цель одна – вывести наш с вами сайт из нормального рабочего состояния .
Ведутся на данный момент работы по восстановлению работоспособности ресурса.
Нежайше просим нас понять и ... простить!
Возможна замедленная загрузка страниц, если страница не загрузилась, обновите!"""
Поставил для тестов WordPress и столкнулся такой проблемой:
WP версий 3.3 и 3.4
Nginx 1.2.2
Apache2 2.2.22
Ubuntu Server 11.04 64
MYSQL 5.1.63
PHP 5.3.5
Фронтпейдж открывается нормально, но при заходе в админку выдаётся ошибка, вынесенная в заголовки!
В момент ошибки, в логи заносится
[Sat Jul 07 21:27:09 2012] [notice] child pid 2634 exit signal Segmentation fault (11)
На том-же хостинге без проблема работает куча сайтов, в том числе и на тяжелом IPB 3.2!
Текущая загрузка сервера 0.03
Доступная память сервера 1434 MB
Что забавно, если включить в Опере турбо-режим, то в админку входт на ура!
Чаще всего это локальная серверная ошибка и она пройдёт со временем или её устранит сам провайдер или хостер. Такое периодически бывает.
Статья дает полную картину, инфа 100%
1. Либо настроен веб сервер криво
2. Либо меняйте хостинг/машину
:)
p.s. если висите на хостинге, меняйте хостинг либо тариф план.
другими словами - не хватает ресурсов обработать все запросы