Форуми Google рясніють скаргами користувачів на серверну помилку 502 в Google додатках. Незважаючи на випадковий фактор своєї появи, ця помилка може неабияк знизити відвідуваність сайту.

502 помилка Bad Gateway може проявлятися по-різному. Приміром, 502 – Service Temporarily Overloaded або HTTP Error 502 – Bad Gateway.

Що викликає 502 помилку сервера

Помилка 502 говорить про те, що зворотний проксі-сервера (наприклад, Apache) для сервера джерела (наприклад, nginx) отримує неправильну відповідь від вихідного веб-сервера.

Поглянувши уважніше, ми виявили, що Apache працює в ньому як проксі nginx. Веб-сервер перезавантажується http-сервіс майже щогодини. Наш досвід розв’язання подібних помилок показує, що помилка 502 Bad Gateway з’являється по одній з наступних причин:

  • Перевантаженість сервера. Веб-сервер може падати через брак ресурсів (наприклад, оперативної пам’яті), що викликається надлишком виконуваних процесів або агресивними діями користувачів;
  • Часта перезавантаження веб-сервера. Таке трапляється при помилках конфігурації, збої в модулях, будь атаках, надлишку виконуваних процесів і додатків. В результаті користувач бачить тимчасову 502 помилку;
  • Поганий код сайту. Сайти з застарілими програмами або корявим кодом впливають на правильне функціонування сервера і ведуть до періодичного виникнення 502 помилки;
  • Помилки мережі. Інші помилки конфігурації мережі (проблеми з DNS, маршрутизація, блокування файерволом, використовуваним на сервері, проблеми у провайдера) також стають причиною появи 502 помилки сервера;
  • Час очікування серверного програмного забезпечення. 502 неминуча помилка при зниженні швидкості виконання запитів в nginx, коли засіб кешування (наприклад, Varnish Cache) йде в таймаут. Сюди ж відносяться і повільні запити.
  • Як виправити 502 серверну помилку в nginx

    Спочатку необхідно визначити першопричину виникнення цієї помилки. Ми вивчили серверні логи під час перезавантаження, і знайшли там помилки seg fault.

    Потім ми покопались в конфігурації сервера, і побачили, що там відсутній модуль mod_rpaf. Саме це і викликало падіння сервера:

    root@server [~]# ls -l /usr/local/apache/modules/mod_rpaf-2.0.so
    /bin/ls: cannot access /usr/local/apache/modules/mod_rpaf-2.0.so: No such file or directory

    Rpaf – це модуль Reverse proxy add forward, розроблений для серверів Apache. Він потрібен у тому випадку, якщо ви задаєте Nginx фронденд-сервером і хочете отримати реальний IP серверних запитів.

    Даний модуль не працював під Apache-2.4, тому ми трохи його підправили. Після перекомпіляції і перезавантаження Apache помилки сегментації припинилися.

    Ми последили за сервером ще пару годин і переконалися в тому, що перезавантаження припинилися, а серверні помилки зникли.

    Ось кілька порад, як виправити помилку 502 bad gateway:

    • Слідкуйте за тим, щоб файли сайту (плагіни і теми) своєчасно оновлювалися і не застарівали;
    • Оптимізуйте і виправляйте повільні MySQL-запити;
    • Проводите аудит серверного програмного забезпечення і вчасно оновлюйте модулі;
    • Уникайте проблем з маршрутизацією і відстежуйте будь-які перевантаження/атаки на сервер.

    Переклад статті «HOW TO FIX «502 SERVER ERROR – BAD GATEWAY» IN WEB SERVERS» був підготовлений дружною командою проекту Сайтостроение від А до Я.