We’re running a web app on Tomcat 6 and Apache mod_proxy 2.2.3. Seeing a lot of 502 errors like this:
Bad Gateway!
The proxy server received an invalid response from an upstream server.The proxy server could not handle the request GET /the/page.do.
Reason: Error reading from remote server
If you think this is a server error, please contact the webmaster.
Error 502
Tomcat has plenty of threads, so it’s not thread-constrained. We’re pushing 2400 users via JMeter against the app. All the boxes are sitting inside our firewall on a fast unloaded network, so there shouldn’t be any network problems.
Anyone have any suggestions for things to look at or try? We’re heading to tcpdump next.
UPDATE 10/21/08: Still haven’t figured this out. Seeing only a very small number of these under load. The answers below haven’t provided any magical answers…yet.
1
Just to add some specific settings, I had a similar setup (with Apache 2.0.63 reverse proxying onto Tomcat 5.0.27).
For certain URLs the Tomcat server could take perhaps 20 minutes to return a page.
I ended up modifying the following settings in the Apache configuration file to prevent it from timing out with its proxy operation (with a large over-spill factor in case Tomcat took longer to return a page):
Timeout 5400
ProxyTimeout 5400
Some backgound
ProxyTimeout alone wasn’t enough. Looking at the documentation for Timeout I’m guessing (I’m not sure) that this is because while Apache is waiting for a response from Tomcat, there is no traffic flowing between Apache and the Browser (or whatever http client) — and so Apache closes down the connection to the browser.
I found that if I left the Timeout setting at its default (300 seconds), then if the proxied request to Tomcat took longer than 300 seconds to get a response the browser would display a «502 Proxy Error» page. I believe this message is generated by Apache, in the knowledge that it’s acting as a reverse proxy, before it closes down the connection to the browser (this is my current understanding — it may be flawed).
The proxy error page says:
Proxy Error
The proxy server received an invalid
response from an upstream server. The
proxy server could not handle the
request GET.Reason: Error reading from remote server
…which suggests that it’s the ProxyTimeout setting that’s too short, while investigation shows that Apache’s Timeout setting (timeout between Apache and the client) that also influences this.
5
So, answering my own question here. We ultimately determined that we were seeing 502 and 503 errors in the load balancer due to Tomcat threads timing out. In the short term we increased the timeout. In the longer term, we fixed the app problems that were causing the timeouts in the first place. Why Tomcat timeouts were being perceived as 502 and 503 errors at the load balancer is still a bit of a mystery.
2
You can use
proxy-initial-not-pooled
See http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html :
If this variable is set no pooled connection will be reused if the client connection is an initial connection. This avoids the «proxy: error reading status line from remote server» error message caused by the race condition that the backend server closed the pooled connection after the connection check by the proxy and before data sent by the proxy reached the backend. It has to be kept in mind that setting this variable downgrades performance, especially with HTTP/1.0 clients.
We had this problem, too. We fixed it by adding
SetEnv proxy-nokeepalive 1
SetEnv proxy-initial-not-pooled 1
and turning keepAlive
on all servers off.
mod_proxy_http is fine in most scenarios but we are running it with heavy load and we still got some timeout problems we do not understand.
But see if the above directive fits your needs.
1
I know this does not answer this question, but I came here because I had the same error with nodeJS server. I am stuck a long time until I found the solution. My solution just adds slash or /
in end of proxyreserve apache.
my old code is:
ProxyPass / http://192.168.1.1:3001
ProxyPassReverse / http://192.168.1.1:3001
the correct code is:
ProxyPass / http://192.168.1.1:3001/
ProxyPassReverse / http://192.168.1.1:3001/
2
Sample from apache conf:
#Default value is 2 minutes
**Timeout 600**
ProxyRequests off
ProxyPass /app balancer://MyApp stickysession=JSESSIONID lbmethod=bytraffic nofailover=On
ProxyPassReverse /app balancer://MyApp
ProxyTimeout 600
<Proxy balancer://MyApp>
BalancerMember http://node1:8080/ route=node1 retry=1 max=25 timeout=600
.........
</Proxy>
I’m guessing your using mod_proxy_http (or proxy balancer).
Look in your tomcat logs (localhost.log, or catalina.log) I suspect your seeing an exception in your web stack bubbling up and closing the socket that the tomcat worker is connected to.
answered Oct 4, 2008 at 3:17
1
You can avoid global timeouts or having to virtual hosts by specifying the proxy timeouts in the ProxyPass directive as follows:
ProxyPass /svc http://example.com/svc timeout=600
ProxyPassReverse /svc http://example.com/svc timeout=600
Notice timeout=600
seconds.
However this does not always work when you have load balancer. In that case you must add the timeouts in both the places (tested in Apache 2.2.31)
Load Balancer example:
<Proxy "balancer://mycluster">
BalancerMember "http://member1:8080/svc" timeout=600
BalancerMember "http://member2:8080/svc" timeout=600
</Proxy>
ProxyPass /svc "balancer://mycluster" timeout=600
ProxyPassReverse /svc "balancer://mycluster" timeout=600
A side note: the timeout=600
on ProxyPass
was not required when Chrome was the client (I don;t know why) but without this timeout on ProxyPass
Internet Explorer (11) aborts saying connection reset by server.
My theory is that the :
ProxyPass
timeout is used between the client(browser) and the Apache.
BalancerMember
timeout is used between the Apache and the backend.
To those who use Tomcat or other backed you may also want to pay attention to the HTTP Connector timeouts.
you should be able to get this problem resolved through a timeout and proxyTimeout parameter set to 600 seconds. It worked for me after battling for a while.
Most likely you should increase Timeout parameter in apache conf (default value 120 sec)
If you want to handle your webapp’s timeout with an apache load balancer, you first have to understand the different meaning of timeout
.
I try to condense the discussion I found here: http://apache-http-server.18135.x6.nabble.com/mod-proxy-When-does-a-backend-be-considered-as-failed-td5031316.html :
It appears that
mod_proxy
considers a backend as failed only when the
transport layer connection to that backend fails. Unlessfailonstatus/failontimeout
is used. …
So, setting failontimeout
is necessary for apache to consider a timeout of the webapp (e.g. served by tomcat) as a fail (and consecutively switch to the hot spare server). For the proper configuration, note the following misconfiguration:
ProxyPass / balancer://localbalance/ failontimeout=on timeout=10 failonstatus=50
This is a misconfiguration because:
You are defining a
balancer
here, so thetimeout
parameter relates to
thebalancer
(like the two others).
However for abalancer
, thetimeout
parameter is not a connection
timeout (like the one used withBalancerMember
), but the maximum time
to wait for a free worker/member (e.g. when all the workers are busy
or in error state, the default being to not wait).
So, a proper configuration is done like this
- set
timeout
at theBalanceMember
level:
<Proxy balancer://mycluster>
BalancerMember http://member1:8080/svc timeout=6
... more BalanceMembers here
</Proxy>
- set the
failontimeout
on thebalancer
ProxyPass /svc balancer://mycluster failontimeout=on
Restart apache.
Форумы Google пестрят жалобами пользователей на серверную ошибку 502 в Google приложениях. Несмотря на случайный фактор своего появления, эта ошибка может изрядно снизить посещаемость сайта.
502 bad gateway — что это за ошибка? Ошибка 502 Bad Gateway может проявляться по-разному. К примеру, 502 – Service Temporarily Overloaded или HTTP Error 502 Bad Gateway.
Ошибка 502 bad gateway — что это значит?
Ошибка 502 bad gateway говорит о том, что обратный прокси-сервер (допустим, Apache) для сервера источника (например, nginx) получает некорректный ответ от исходного веб-сервера.
Посмотрев внимательнее, мы обнаружили, что Apache работает в нем как прокси nginx. Веб-сервер перезагружал http-сервис почти каждый час. Наш опыт в устранении подобных ошибок показывает, что ошибка 502 Bad Gateway появляется по одной из следующих причин:
- Перегруженность сервера. Веб-сервер может падать из-за нехватки ресурсов (например, оперативной памяти), вызываемой избытком выполняемых процессов или агрессивными действиями пользователей;
- Частая перезагрузка веб-сервера. Такое случается при ошибках конфигурации, сбоях в модулях, любых атаках, избытке выполняемых процессов и приложений. В результате пользователь видит временную 502 ошибку;
- Плохой код сайта. Сайты с устаревшими приложениями или корявым кодом влияют на правильное функционирование сервера и ведут к периодическому возникновению 502 ошибки;
- Ошибки сети. Прочие ошибки конфигурации сети (проблемы с DNS, маршрутизация, блокировка файерволом, используемым на сервере, проблемы у провайдера) также становятся причиной появления 502 ошибки сервера;
- Время ожидания серверного программного обеспечения. 502 ошибка неизбежна при снижении скорости выполнения запросов в nginx, когда средство кэширования (например, Varnish Cache) уходит в таймаут. Сюда же относятся и медленные запросы.
Как исправить ошибку 502 bad gateway на веб-сервере 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-запросы;
- Проводите аудит серверного программного обеспечения и вовремя обновляйте модули;
- Избегайте проблем с маршрутизацией и отслеживайте любые перегрузки/атаки на сервер.
Ошибка 502 при открытии сайта может появиться неожиданно. В этой статье мы расскажем, что значит код ошибки 502 и что может сделать пользователь и владелец сайта, чтобы её исправить.
Ошибка 502 Bad Gateway: что значит
Файлы любого сайта находятся на физическом сервере. Чтобы их получить и отобразить веб-ресурс на компьютере, браузер делает запрос на сервер. Если он по какой-либо причине не передал файлы, появляется ошибка 500-511.
Ошибка 502 Bad Gateway возникает при неправильной работе прокси-сервера, DNS-сервера и чаще всего сервера, на котором размещён сайт. Проблема может распространяться как на весь ресурс, так и на отдельные страницы. Это зависит от характера проблемы. Существуют разновидности 502 ошибки: Bad Gateway Nginx, Bad Gateway Apache. Об их отличиях мы расскажем ниже. Также эта ошибка может иметь формулировки:
- Bad Gateway: Registered endpoint failed to handle the request, Temporary Error (502),
- Error 502,
- Bad 502 Gateway,
- 502 Error,
- 502. That’s an error,
- 502 Service Temporarily Overloaded,
- 502 Server Error: The server encountered a temporary error and could not complete your request,
- 502 – Web server received an invalid response while acting as a gateway or proxy server,
- 502 Bad Gateway Nginx,
- 502 Proxy Error,
- HTTP 502,
- HTTP Error 502 Bad Gateway.
Что значит плохой шлюз: ошибка 502
Причины возникновения ошибки 502 Bad Gateway
-
Первая и основная причина ― перегрузка сервера. Перегрузка может быть вызвана несколькими проблемами:
- Большое количество посетителей одновременно. Веб-ресурс может посещать ограниченное количество посетителей. Сколько человек может посетить сайт зависит от возможностей сервера (размера оперативной памяти) и настроек, которые сделал создатель ресурса. Если по какой-либо причине на сайт зайдёт больше пользователей, чем запланировано, сервис может не справиться и страница выдаст код 502. Такое случается при рекламных акциях и распродажах в интернет-магазинах.
- Атака хакеров или DDoS-атака. Эта проблема связана с предыдущей причиной перегрузки. Хакер имитирует большой наплыв пользователей, из-за чего сервер выходит из строя. Такие атаки могут быть использованы для снижения продаж.
- Плохая оптимизация сайта. Настройки ресурса сделаны так, что маленькое количество посетителей генерирует много запросов. В этом случае нужно оптимизировать работу сервера с пользовательскими запросами.
- Второй причиной возникновения кода 502 могут явиться ошибки РНР. Если для расширения функционала сайта в панель управления были добавлены некорректно настроенные плагины, они могут выдавать проблемы в своей работе. Вместе с ними ошибку покажет и сайт целиком. Также если код сайта написан неправильно, запросы могут давать отрицательный результат.
- Ошибка браузера. Проблема может быть на стороне пользователя, если у него установлены расширения, которые нарушают соединение с сервером сайта.
Чем отличается ошибка 502 Bad Gateway Nginx
Между браузером и сервером может стоять веб-сервер. Он используется для снижения нагрузки на сервер, аутентификации пользователей и многого другого. Самые популярные программы для создания веб-сервера ― Nginx и Apache. Так как веб-сервер является посредником между браузером и сервером, то именно он будет оповещать пользователя о проблеме. Поэтому в зависимости от веб-сервера в сообщении вы можете увидеть надпись Bad Gateway Nginx или Bad Gateway Apache. При этом причины возникновения проблемы одинаковы.
Как исправить ошибку 502
Что делать, если вы пользователь
- Перезагрузите страницу, если проблема была вызвана наплывом посетителей. Возможно, через некоторое время посетители уйдут со страницы и вы сможете увидеть контент.
- Попробуйте зайти на другой веб-ресурс. Если вы можете зайти на другой сайт, значит проблема на стороне владельца ресурса и вы ничего не можете сделать. Вернитесь на страницу позже, когда администратор восстановит доступ.
- Проверьте подключение к интернету. Из-за низкой скорости или нестабильности соединения браузер может не получать данные с сервера.
- Запустите браузер в режиме «Инкогнито». В режиме «Инкогнито» браузер работает с базовыми настройками. Если вам удалось зайти на веб-ресурс в этом режиме, значит одно из ваших расширений браузера мешает соединению. Это расширение нужно отключить.
- Почистите файлы cookies. Если при повторном входе на сайт всё равно отображается ошибка 502, очистите кэш браузера. Возможно, доступ уже восстановлен, но ваш браузер обращается к старой версии страницы из кэша.
- Очистите кэш DNS. DNS-кэш — это временная база данных вашего компьютера, которая хранит записи обо всех последних посещениях и попытках посещений веб-сайтов и их IP-адресах. Кэш позволяет ускорить вход на часто посещаемые веб-ресурсы. Если у сайта изменились DNS, а данные из кэша отправляют на старый IP-адрес, в браузере появится код 502. После очистки браузер начнёт обращаться к новому IP-адресу.
Как очистить кэш DNS
В зависимости от вашей операционной системы очистите кэш по одной из инструкций.
- Откройте командную строку. Для этого введите в поисковую строку «Командная строка» и выберите появившееся приложение:
- Введите команду:
ipconfig /flushdns
- Дождитесь сообщения об очистке кэша:
- Откройте терминал клавишами Ctrl+Alt+T.
- Введите команду:
Для Ubuntu:
sudo service network-manager restart
Для других дистрибутивов:
sudo /etc/init.d/nscd restart
- Войдите в терминал. Для этого нажмите клавиши Command + Space. Введите Терминал и нажмите на найденное приложение.
- Введите команду:
sudo killall -HUP mDNSResponder
Готово, вы очистили кеш DNS. Попробуйте заново зайти на сайт.
Что делать, если вы владелец сайта
Проверьте количество свободной памяти. Это можно сделать двумя способами.
Способ 1 ― введите команду top
в командной строке сервера:
Mem ― вся оперативная память.
Swap ― раздел подкачки.
Посмотрите на строку Mem ― free. Это количество свободного места на сервере. Если там указано маленькое число, ошибка 502 Bad Gateway появляется из-за нехватки памяти. Увеличьте количество оперативной памяти и проблема пропадёт. Также в результатах можно будет увидеть, какую нагрузку на сервер даёт каждый отдельный процесс.
Способ 2 ― введите команду free -m
.
Mem ― вся оперативная память.
Swap ― раздел подкачки.
В строке Mem ― free показано свободное место на сервере. Если там маленькое число, увеличьте количество оперативной памяти.
Проверьте логи сервера. Если проблема возникла в момент каких-либо обновлений на сайте, проверьте журнал изменений, чтобы отменить те доработки, которые нарушили функциональность сервера. Также в логах можно увидеть DDos-атаку. Если дело в нехватке памяти, в логах отобразится ошибка OOM (out of memory).
Проверьте плагины в WordPress. Если ваш сайт создан на WordPress, некоторые плагины и темы могут нарушать работу сервера.
-
1.
Войдите в панель управления WordPress. Если вы пользуетесь услугой REG.Site, войти в панель управления CMS можно прямо из Личного кабинета.
-
2.
Перейдите во вкладку «Плагины» ― «Установленные».
-
3.
Нажмите Деактивировать у плагина, который, как вам кажется, повлиял на работу сайта:
Можно сразу отключить все плагины, чтобы убедиться, что один из них влияет на работу сервера. И далее по очереди включайте плагины, пока не найдёте конкретный плагин-виновник.
Проверьте, как работают вспомогательные службы, например MySQL и Memcached. Иногда они могут стать причиной 502 ошибки.
Свяжитесь со службой поддержки своего хостинг-провайдера. Если ничего из вышеперечисленного не помогло, обратитесь к службе поддержки и подробно опишите проблему и действия, которые вы предприняли до обращения. Действуйте по одной из инструкций ниже.
Сайт находится на виртуальном хостинге REG.RU
Если вы столкнулись с единичными случаями возникновения 502 ошибки, можете проигнорировать их.
Если код 502 возникает регулярно, напишите заявку в службу поддержки. В заявке укажите:
- Точное московское время наблюдения проблемы.
- Название сайта, на котором была замечена проблема.
- Если ошибка отображается не сразу, а после определённых действий (добавление изображения, отправка формы с сайта, импорт файлов), подробно опишите порядок действий, по которому мы сможем воспроизвести проблему.
- Если для воспроизведения проблемы необходимо авторизоваться в административной части сайта, предоставьте логин и пароль для доступа.
Сайт находится на VPS REG.RU
Чаще всего на VPS используется связка: Nginx + бэкенд-сервер (Apache, PHP-FPM, Gunicorn, NodeJS). Ошибка 502 возникает в случае, если Nginx не может получить ответ от этих сервисов.
Клиенты с VPS сталкиваются с «502 Bad Gateway», когда:
- какой-то из сервисов выключен. Перезапустите веб-сервер Apache, PHP-FPM либо другой сервис, с которым работает Nginx;
- между Nginx и бэкенд-сервером некорректно настроена связь. Например, Nginx производит обращение к порту 8080, а веб-сервер Apache «слушает» на 8081. В этом случае необходимо скорректировать настройки веб-сервера.
Если вам не удалось самостоятельно устранить ошибку 502, обратитесь в техподдержку. В заявке укажите:
- Точное московское время наблюдения проблемы.
- Название сайта, на котором была замечена проблема.
- Если ошибка отображается не сразу, а после определённых действий (добавление изображения, отправка формы с сайта, импорт файлов), подробно опишите порядок действий, по которому мы сможем воспроизвести проблему.
- Если для воспроизведения проблемы необходимо авторизоваться в административной части сайта, предоставьте логин и пароль для доступа.
Загружая страницу, браузер отправляет кучу запросов другим серверам. Они обрабатывают все запросы, затем возвращают код ответа HTTP с определенным результатом. Если в процессе этого возникнет какой-то сбой, на экране браузера отобразится ошибка. И одна из таких ошибок – 502 Bad Gateway. Я расскажу, что она означает, по каким причинам выходит, а еще опишу способы ее устранения.
Что означает ошибка 502 Bad Gateway
Ошибки, принадлежащие серии 5xx, означают появление проблем на стороне сервера. Если взять конкретно ошибку 502 Bad Gateway, то ее появление будет означать получение неправильного ответа сервера. «Виновниками» в такой ситуации обычно являются прокси, DNS или хостинг-серверы.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Что делать, если вы пользователь
Ошибка 502 Bad Gateway может появиться на любом сайте. Пользователю для начала следует проверить, не является ли причиной проблемы какие-то неполадки с его стороны. Сделать это можно указанными ниже способами.
Перезагрузить страницу
Возможно, на момент загрузки число запросов на сайт превышает определенный лимит, устанавливаемый владельцем сайта. Если это действительно так, тогда простая перезагрузка страницы вполне будет уместна. Я рекомендую обновить страницу как минимум три раза в течение 2-3 минут и только потом приступать к следующим способам.
Проверить подключение к интернету
Стоит проверить работу модема и попробовать загрузить другие страницы. Убедитесь, что подключение к интернету стабильное. Еще вариант – перезапустить маршрутизатор и попробовать снова загрузить проблемный сайт.
Очистить кэш и cookies
Нередко причиной появления данной ошибки могут быть неверно загруженные cookies и кэш. В таких случаях необходимо просто очистить данные в настройках интернет-обозревателя.
Для любого браузера актуально – зайти в историю просмотров и найти ссылку «Очистить историю». В новом окне отметить пункты с кэшем и cookies, затем подтвердить действие. Как только данные будут удалены, надо вновь попробовать загрузить страницу. Не помогло? Идем дальше!
Очистить кэш DNS
Допустимо, что в кэше установлено неправильное значение IP-адреса. Для таких случаев можно использовать сброс DNS кэша. В ОС Windows необходимо открыть инструмент «Командная строка» (вводим в поисковую строку название программы и выбираем запуск от имени администратора).
Далее следует ввести вот такую команду и активировать ее нажатием на клавишу Enter:
ipconfig /flushdns
Нужно подождать некоторое время, пока операция не завершится. Как только действие будет завершено, на экране выйдет подтверждение, что кэш был очищен.
Для Linux действие примерно схоже, но команда выглядит иначе. Открываю утилиту «Терминал» и ввожу в поле вот такой запрос:
Для Ubuntu:
sudo service network-manager restart
Для других дистрибутивов:
sudo /etc/init.d/nscd restart
Попробовать зайти с другого браузера
Проблема 502 Bad Gateway может быть актуальна и для конкретного браузера. Если у вас на компьютере есть другой интернет-обозреватель, попробуйте открыть сайт через него.
Отключить плагины и расширения
На загрузку некоторых страниц могут влиять установленные в браузер плагины и расширения. Особенно это касается VPN-сервисов и блокировщиков рекламы. Попробуйте поочередно отключать их и перезапускать страницу. Не исключено, что виновник будет найден.
Зайти на страницу позже
Когда ничего из вышеперечисленного не помогло, значит, проблема все же кроется на стороне сервера. Вам остается только подождать некоторое время, пока разработчики не устранят ошибку на сайте. Вы также можете написать владельцу и сообщить о проблеме.
Читайте также
Что делать, если вы администратор сайта
Обычно такие проблемы самостоятельно решать не рекомендуется. Лучше сразу же обратиться в службу технической поддержки и описать проблему. Но есть пара действий, которые все же могут помочь определить источник проблемы.
Проверка журнала ошибок
Актуально в случаях, при которых ошибка 502 Bad Gateway появляется после внесения изменений или обновления. Определить это очень просто, нужно лишь проверить журнал ошибок. В CMS WordPress можно включить запись возникающих ошибок, добавив в файл wp-config.php вот такие строки:
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
После этого все записи начнут отображаться в файле debug.log. Храниться он будет в директории wp-content. Понадобится некоторое время, чтобы причины ошибок были записаны. Потом можно тщательно изучить записи и уже на основе их предпринимать конкретные изменения.
Проверка плагинов
Следует проверить, не влияют ли какие-либо плагины на работу сайта. Для этого можно поочередно отключать их, просто переименовывая папку интересующего плагина. Для этого надо выделить папку, затем нажать на меню «Файл» и в нем выбрать пункт «Переименовать».
Проверка сети CDN
Сети CDN и службы предотвращения DoS тоже могут влиять на работу сайта. Обычно виновник проблемы указывается на странице с кодом ошибки. Например, если под кодом 502 Bad Gateway есть строка cloudflare-nginx, значит, для исправления ошибки надо обратиться в службу поддержки CloudFlare. Можно отключить данный сервис, но потом придется долго ждать обновления DNS (это может занять несколько часов).
Ошибка 502 на виртуальном хостинге VPS/VDS
Ошибка 502 Bad Gateway возникает из-за превышения лимита трафика пользователей, «шалостей» бота, скачивания сайта или даже DoS‑атаки. Решение данной проблемы кроется в ограничениях памяти.
Запустить команду top
Данный запрос в терминале поможет установить наличие свободной памяти. Этим же способом можно проверить, работает ли Apache.
Посмотреть логи Apache и nginx
Обычно в этих логах отображается активность пользователей. Если есть что-то подозрительное, можно предпринять действия. К примеру, забанить определенные IP-адреса, настроить Fail2ban или подключить систему защиты от DoS-атак.
Если после этого количество запросов к серверу снизилось, необходимо перезапустить Apache.
Увеличить объем памяти
Бывает, что с логами все нормально, но памяти на обработку запросов все равно не хватает. Узнать об этом просто – при проверке командой top будет выдана ошибка OOM (out of memory). В таких случаях можно просто увеличить ее объем. Можно просто заказать другой тариф, в котором количество предоставляемой памяти больше. Подробнее об этом.
Проверить лимиты на php-cgi процессы
Если после проверки командой top показано, что свободной памяти еще достаточно, значит, на php-cgi процессы установлены лимиты. Для решения надо открыть конфигурационный файл Apache – httpd.conf, найти секцию модуля FastCGI (mod_fascgi или mod_fastcgid) и увеличить лимит.
Обратиться к службе технической поддержки
Если вышеперечисленные способы исправления ошибки 502 на виртуальном сервере не помогут, придется обращаться в техподдержку хостинга. При этом обязательно надо упомянуть, что вы уже предприняли и как проводили все действия.
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.
Already on GitHub?
Sign in
to your account
Closed
panovitch opened this issue
Jan 25, 2018
· 22 comments
Comments
Hi there! Was wondering if you have some insight on the following problem:
Long story short
We are running an aiohttp app behind an Apache proxy. Around 20% of requests to the app cause Apache to return 502 Proxy Error.
These happen with requests to all endpoints of the server, and there seems to be no pattern to errors of any kind. The proxy error is returned immediately upon request.
Other servers/apps (built on other frameworks, for example, tornado) run behind the same Apache proxy and do not show the same behavior.
The example of Apache logs:
[Tue Jan 23 12:38:51.050529 2018] [proxy_http:error] [pid <pid>:tid <tid>] (20014)Internal error (specific information not available): [client <IP address>] AH01102: error reading status line from remote server <hostname>
Full error response example:
HTTP/1.1 502 Proxy Error
Connection: Keep-Alive
Content-Length: 502
Content-Type: text/html; charset=iso-8859-1
Date: Tue, 23 Jan 2018 13:47:29 GMT
Keep-Alive: timeout=15, max=100
Server: Apache/2.4.18 (Ubuntu)
502 Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request.
Reason: Error reading from remote server
Your environment
aiohttp==2.3.9
python 3.6.3
Apache 2.4.18
Do you see anything in the logs from aiohttp?
How are you running aiohttp? With gunicorn or directly?
I guess debug level logs from aiohttp (and gunicorn if it’s running) would help.
Also how is the aiohttp server addressed by apache (by an ip or a hostname)? I’ve had similar issues that turned out to be DNS problems which were fixed by using static IPs.
Hi @samuelcolvin,
We are running aiohttp directly.
The Apache addresses the server by a hostname, but I doubt that issue is DNS-related, since other apps also run on the same host and dont have any problems.
There are no records in aiohttp logs for the problematic requests at all.
Hello @asvetlov,
Do you have any recommendation for us to validate the source of the issue? How can we help you guys resolve this problem?
Sorry, after digging in I did not found expected bug.
Cannot reproduce locally.
aiohttp error log is required (with DEBUG level enabled) for getting more information about the problem.
I’m having something similar, running aiohttp behind zuul proxy. After several good responses, and a while of doing nothing, server starts responding with incorrect response, which starts with rnTP/1.1 200 OK
instead of HTTP/1.1 200 OK
- Not sure if you have the same problem.
- I need reliable way for reproducing the error — otherwise a change for fix is very low. Python test would be awesome.
Hi @asvetlov,
We tried to check the aiohttp debug logs, that’s how we tried to do it, and how we are running the app:
def setup_loggers():
stream_handler = logging.StreamHandler(stream=sys.stderr)
_stream_handler.setLevel(logging.DEBUG)
loggers = [getLogger('aiohttp.internal'), getLogger('aiohttp.server')]
for logger in loggers:
logger.setLevel(logging.DEBUG)
logger.addHandler(_stream_handler)
def run_app():
"""
Application runner function.
"""
setup_loggers()
app = create_app()
host = server_option("host")
port = int(server_option("port"))
web.run_app(
app=app, host=host, port=port, access_log=make_logger(is_development=True),
access_log_format=access_log_format)
We ran the app with this configuration, but were unable to see anything related to the problematic requests — they do not even register in the access log.
I’m posting the Apache config below, hope it might help you reproduce it.
Apache Configuration
apache2.conf
Default config. Nothing special here.
sites-enabled
ServerName mine.localhost.com
ProxyRequests Off
<Location /aiohttp_app/>
ProxyPass http://localhost:8137/ retry=0
ProxyPassReverse http://localhost:8137/
</Location>
Apache Error Logs
[Fri Feb 02 16:05:41.865610 2018] [proxy_http:error] [pid 6146:tid 140638813112064] (20014)Internal error (specific information not available): [client 127.0.0.1:39048] AH01102: error reading status line from remote server localhost:8137
[Fri Feb 02 16:05:41.865899 2018] [proxy:error] [pid 6146:tid 140638813112064] [client 127.0.0.1:39048] AH00898: Error reading from remote server returned by /aiohttp_app/ping
[Fri Feb 02 16:05:41.875609 2018] [proxy_http:error] [pid 6147:tid 140638787933952] (20014)Internal error (specific information not available): [client 127.0.0.1:39050] AH01102: error reading status line from remote server localhost:8137
[Fri Feb 02 16:05:41.875797 2018] [proxy:error] [pid 6147:tid 140638787933952] [client 127.0.0.1:39050] AH00898: Error reading from remote server returned by /aiohttp_app/ping
Errors are stored in logger named aiohttp.server
.
I suggest calling logging.basicConfig(level=logging.DEBUG)
to see all logs.
I spend few hours to produce some small replicable example with no luck. If anything changes I will let you know, thanks anyway!
Hi @asvetlov, running the app with logging.basicConfig(level=logging.DEBUG)
also doesn’t show anything. To help reproduce the problem, I’ve created this: https://github.com/panovitch/test_aiohttp_502. The repo contains a sample apache config (main config apache.conf, which is not different from the default one AFAIK, and a site config for sites-enabled), a way to test for error, and an app (a copy of the example app really). Please note that error occurs pretty randomly so give the test some time to run.
Hi everyone,
We eventually managed to solve the problem by adding this to our apache proxy config: disablereuse=on
-hope this would be useful!
@panovitch do you have the chance to test if the error is reproducible with Aiohttp 3.x?
Regarding the disablereuse=on
you are forcing to open a TCP connection at each time. is this stack running in local or are separated pieces within a network?
I am seeing this with aiohttp==3.1.3
and Apache 2.4.10.
Hi everyone,
We eventually managed to solve the problem by adding this to our apache proxy config:
disablereuse=on
-hope this would be useful!
Hello,
Thank you for letting us know your solution. My question is if there is any downgrade in performance with this setup? I have something like 20-30 requests per minute. This setting sounds like disabling pooled connections which means that every of this 20-30 requests will open new connection for itself even if they are from a same client.
@panovitch
Running into similar issue with aiohttp + gunicorn + apache2.
The same service was running fine on another Python stack + apache2.
(32)Broken pipe: [client 192.168.8.1:44745] AH01084: pass request body failed to [::1]:80 (localhost)
In my environment, I’m not allowed to change disablereuse
. The admin is suspecting an issue with keep-alive/persistent connections.
Apache uses multithreaded/multiprocessed workers to process http requests.
What is the point of deployment aiohttp behind this?
The concurrency level is limited by Apache, and the number is small.
In contrast, nginx or haproxy use asynchronous/nonblocking model, they fit with aiohttp pretty well.
Sorry, I’ve not motivated to support aiohttp+apache combination. If somebody wants to provide a pull request — you are welcome.
Since it did not happen for 2 years yet, I’m closing the issue.
Apache uses multithreaded/multiprocessed workers to process http requests.
FTR this is not entirely true. You can configure it the way nginx works.
I don’t have control over our infrastructure, Apache2 is used as reverse proxy for all our containers. I spent time learning aiohttp, enjoyed it and thanks a lot your work on this project. On my side I think I’ll have to work with another stack.
Maybe add a note in documentation on Apache not being currently supported as a reverse proxy?
From my understanding, event worker still uses async mode for inactive connections only. Which may work in some scenarios though.
Anyway, this project is volunteer-driven.
If somebody wants to dig into problems with Apache and make a fix — please do.
Docs update that states that Apache usage is discouraged and not fully supported/tested, use it on own risk, is also acceptable.
guillaume-fr
added a commit
to guillaume-fr/aiohttp
that referenced
this issue
Jan 30, 2020
Random question, many moons later: what is your transfer-encoding set to?
I discovered a problem where apache would break with a 502 as well, turns out I had transfer-encoding set to chunked with a non-chunked response. Removing that header solved it for me.
Nginx is one of the fast performing web servers on the internet. Nginx and php-fpm are the most used combinations on the internet to server PHP websites. Sometimes we came across a very bad Nginx 502 Bad Gateway error generated by Nginx server and it is not very easy to identify the problem and fix. Here are some quick solutions to fix Nginx 502 Bad Gateway error on a web-server.
Contents
- 1 How Nginx 502 Bad Gateway Error happens and what is its connection with php-fpm
- 1.1 Nginx 502 Bad Gateway Error with PHP-FPM
- 1.2 Php-fpm is not communicating with Nginx and causing a 502 Bad Gateway Error
- 1.3 502 Bad Gateway Error due to Nginx is timing out
- 1.4 502 Bad Gateway Error due to PHP-FPM is timing out
- 2 Nginx 502 Bad Gateway Error when Nginx as Proxy for Apache
- 3 Nginx with other services/apps and 502 Bad Gateway Error
How Nginx 502 Bad Gateway Error happens and what is its connection with php-fpm
Common 502 errors include the following messages from Nginx server
- “502 Bad Gateway”
- “502 Bad Gateway NGINX”
- “502 Proxy Error”
- “502 Service Temporarily Overloaded”
- “Error 502”
- “HTTP Error 502 – Bad Gateway”
- “HTTP 502 Bad Gateway”
These errors point to the same situation of Nginx server and the error came across below situations
- Nginx server running with php-fpm service
- Nginx is running as a reverse proxy to Apache server
- Nginx running as a gateway to other services like Python, Ruby, etc.
- Bad configuration of cache or timeout.
Now the error says there is a “BAD GATEWAY”. That means Nginx server is trying to communicate to another service through a gateway and it is not getting any answer from that gateway. This is Nginx 502 Bad Gateway error situation.
So Nginx and another service (Apache, php-fpm, other services) running. Both are communicating through a gateway and Nginx is not getting any answer from the gateway. To solve 502 Bad Gateway Error the other service running with Nginx must answer through the gateway.
Usually, this happens due to a misconfiguration in the configuration files of the server. Or the other service is not running properly with Nginx. So to solve this problem a two-step check is required.
- Step 1: Check the other server status, whether it is running perfectly, is it giving the desired output?
- Step 2: Is the configuration correct? Is the second service configured to answer the gateway perfectly?
Nginx 502 Bad Gateway Error with PHP-FPM
The problem occurs due to the following conditions
- PHP-FPM won’t get started
- PHP-FPM not running
- NGINX can’t communicate with PHP-FPM server
- NGINX is timing out
- PHP-FPM is timing out with requests
Check whether php-fpm is running or not
service php-fpm status
or
systemctl status php-fpm.service
will tell you about the current situation of php-fpm server
Just restart the php-fpm server to solve this problem
service php-fpm restart
or
systemctl restart php-fpm.service
for php5 the name of service may be php5-fpm, for PHP 7 it may be php7.0-fpm or php7.1-fpm or php7.2-fpm check accordingly.
Php-fpm is not communicating with Nginx and causing a 502 Bad Gateway Error
This is caused due to the misconfiguration of the php-fpm server or the misconfiguration of Nginx server.
Check the following configuration files in the worker pool configuration (the file is in /etc/php/fpm/pool.d/www.conf
, this may vary with installation) and verify these lines ( www-data is the owner of the web server process, that is nginx)
user = www-data
group = www-data
listen = /var/run/php7-fpm.sock
listen.owner = www-data
listen.group = www-data
then restart the php-fpm service.
If the Nginx server and php-fpm are running and still getting a 502 Bad Gateway error then it is the problem with communicating the gateway. The problem is happening due to the misconfiguration in the file /etc/nginx/sites-enabled/default
, by default or the file name in the name of the website called /etc/nginx/sites-enabled/mywebsite.com.conf
Look at the segment where the fastcgi_pass configuration. It must be the same as the listen in the above configuration
location ~ .php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php7-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_nam$
include fastcgi_params;
}
See
listen = /var/run/php7-fpm.sock
and
fastcgi_pass unix:/var/run/php7-fpm.sock
must be the same.
Then restart both Nginx and php-fpm servers. Now check the website whether it is serving properly.
502 Bad Gateway Error due to Nginx is timing out
if php-fpm is running and serving the requests properly then there will be a chance of Nginx is timing out. That is php-fpm do not respond to NGINX in a timely manner will cause a 502 because NGINX couldn’t wait any longer for a response from php-fpm.
In this case, increasing the maximum execution time of the application and NGINX’s timeout window would be the best solution.
To get this we need two changes:
First, increase the maximum execution time of the php-fpm server. To do this open PHP-FPM’s configuration file
sudo nano /etc/php7/fpm/php.ini
find the following line and increase the number to a higher value. Usually 60 or 120.
max_execution_time = 30
The value depends upon the expected execution time of the application running in the php-fpm server. Add some extra buffer time to get rid of the situation again.
Exceptionally large execution time will affect the server performance and it may lead to a dead server process in the memory.
Second, edit the NGINX config
sudo nano /etc/nginx/nginx.conf
add the following within the HTTP block to increase timeout windows, buffers, and buffer sizes:
http { ... fastcgi_buffers 8 16k; fastcgi_buffer_size 32k; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; }
Save the changes to the file and exit. Now restart Nginx and php-fpm
service php-fpm restart
or
systemctl restart php-fpm.service and
service nginx restart
systemctl restart nginx.service
502 Bad Gateway Error due to PHP-FPM is timing out
if the php-fpm server is timing out upon execution of an exceptionally long PHP script or the script is blocked by a large MySQL query process then these solutions may not work. In that situation, you could temporarily extend PHP’s execution time limit by invoking the set_time_limit()
function from within the PHP application, but if you are continuously reaching into the execution timeout limit then as a long-term solution like profiling or increasing PHP-FPM’s timeout may be more appropriate to get rid of a 502 error more safely. These things must be done after an extensive research of the execution time of the corresponding PHP function or MySQL query. Take a look at the memory and system load during the execution is a must for a smooth operation of this server.
Nginx 502 Bad Gateway Error when Nginx as Proxy for Apache
In this situation, the gateway service is Apache and the Nginx is a proxy for Apache. If apache server dies or it’s not well configured, it can cause this 502 Bad Gateway error. How to fix the apache error? Most of the times, restarting apache web server will get rid of this, but you must check the log files to know why exactly this was caused.
Nginx with other services/apps and 502 Bad Gateway Error
In this situation, the app is gone not responding. Try restarting the other service behind Nginx server and check the logs created by the application to find the exact reason why a 502 Error happened.
Check the status codes HTTP Status Codes on W3C for more details.
При активном сёрфинге в сети не всегда всё проходит гладко. Время от времени пользователи вместо страницы сайта сталкиваются с ошибками HTTP. Если вы в качестве пользователя интернета столкнётесь с ошибкой 500, то в большинстве случаев проблема заключается не в вас или вашем интернет-соединении, а в сервере сайта. Исключением является ошибка 502, которая может указывать на неправильные настройки, особенно если окно с ошибкой появляется очень часто и не зависимо от того, на какой сайт вы пытаетесь перейти. Для начала необходимо определить, что методы решения ошибки 502 Bad Gateway для пользователя и администратора сайта отличаются. Рассмотрим причины и решения более подробно.
502 Bad Gateway – что это значит
Интернет-протокол HTTP в ответ на каждый запрос предоставляет код состояния. Самый распространённый из них – 200: ОК, всё работает как надо. Обычно этот статус не отображается. Вместо этого посетители видят контент сайта. Различные ошибки имеют разные причины: если ошибки 400 означают, что проблемы у пользователя, то коды от 500 до 511 означают, что отрицательный ответ является результатом ошибки сервера. Цифры также указывают, где произошла ошибка – по крайней мере, для пользователей, которые знают, что означают отдельные коды.
Ошибка 502 обычно сопровождается фразой Bad Gateway, Bad Gateway Nginx, Bad Gateway Apache или Bad Gateway: Registered endpoint failed to handle the request. Такая ошибка неверного шлюза вместе с ошибкой «400: Страница не найдена» является одной из самых распространённых при работе в Интернете. Он появляется, когда сайт, к которому осуществляется доступ через главный сервер, не смог переслать запрос. В этом случае первый сервер функционирует только как прокси или шлюз. Хотя можно сказать, что все запросы в Интернете также пересылаются через шлюзы. Именно поэтому возникновение окна с ошибкой может доставить некоторые неудобства – не совсем ясно, в какой момент процесса запрос обнаружил неисправность.
Источники ошибки 502 Bad Gateway
В большинстве случаев ошибка неверного шлюза возникает на стороне сервера, поэтому простой пользователь исправить её не может. Также существует вероятность, что используемый браузер зарегистрировал ошибку 502 Bad Gateway, которой на самом деле не существует, или вы просто отключены от сети. Источником возникновения ошибки также может служить следующее:
- Отказ сервера – шлюз от целевого сервера получает отрицательный результат. Это может произойти из-за сбоя системы. В редких случаях серверы могут отключаться от сети, например, когда контент нарушает закон.
- Перегрузка веб-сервера – если веб-сервер достигает своего предела, он не может больше отвечать на запросы. Поэтому шлюз выдаёт 502 Bad Gateway. Причиной может быть неожиданно высокий интерес к сайту или даже DDoS-атака. Это означает, что злоумышленник использует виртуальную сеть, чтобы перегрузить сервер и спровоцировать системный сбой.
- Неправильное программирование на PHP – иногда проблема содержится в коде сайта. Тогда на некоторые запросы будет получен отрицательный результат.
- Ошибка связи – вызывать ошибки при пересылке запросов на обеих сторонах связи могут межсетевые экраны (сервер и клиент).
- Ошибка браузера – вызвать ошибку отображения веб-сайта и 502 Bad Gateway могут расширения вашего браузера.
Схема DoS-атаки
Причины возникновения
Существует 3 основных причины ошибки 502 Bad Gateway:
- Доменное имя не разрешено – доменное имя по IP-адресу не разрешено. Важно отметить, что изменения DNS могут занимать столько же времени, сколько они будут активны. Это зависит от TTL или «времени жизни», отведённого для каждой записи.
- Исходный сервер недоступен – не работает или отсутствует интернет-соединение.
- Брандмауэр блокирует запрос – брандмауэр блокирует связь между пограничными и исходным серверами на сайте. Также может быть вызвано подключаемыми модулями безопасности CMS. Некоторые системы защиты DDOS слишком активны, поэтому блокируют запросы от серверов доставки контента.
Как исправить ошибку 502 Bad Gateway
Чтобы исправить ошибку 502 Bad Gateway, рассмотрим решение проблемы с точки зрения администратора сайта. Посетитель вашего портала поделился с вами информацией о том, что при попытке получить доступ к вашему сайту он видит сообщение об ошибке 502. Что это значит для вас? Администратор также далеко не всегда может правильно установить причину возникновения ошибки. Во-первых, нужно проверить, доступен ли сайт в целом. Если ваш сервер действительно выходит из строя, вам следует связаться с вашим хостинг-провайдером. Возможно, они уже знают об ошибке, и их поддержка уже работает над восстановлением. Также следует проверить файлы журналов сервера на наличие сообщений об ошибках. В частности, источником ошибок часто становится программирование на PHP, поэтому обязательно проверьте, содержится ли источник ошибок в коде или в базе данных. При необходимости можно использовать старую резервную копию, чтобы быстро исправить ошибку.
Часто ошибка возникает только потому, что сервер был временно перегружен или слишком долго не мог ответить на вышестоящий запрос. Если такие перегрузки начинают возникать всё чаще, следует обратиться к хостинг-провайдеру. Совместными усилиями можно добиться лучшей конфигурации веб-сервера, но удаётся это далеко не всегда. Затем вы должны проверить, правильно ли настроен ваш брандмауэр, и убедиться, что он не блокирует какие-либо законные запросы. Другим источником ошибки может быть неисправность разрешений имён. Проверьте настройки DNS у своего хостинг-провайдера. Чаще всего 502 через какое-то время исчезает сама по себе. Когда ошибка возникает за пределами вашей сферы влияния, она решается интернет-провайдером (ISP) или хостинг-провайдером веб-сервера без какого-либо вмешательства с вашей стороны. Если же неисправность возникает по вашей вине, определить её источник и способ устранения нужно как можно быстрее.
Временно отключите свою сеть доставки контента (CDN)
Запросы браузера иногда перенаправляются через обратный прокси-сервер. Другими словами, использование прокси-сервера создаёт посредника между браузером пользователя и сервером сайта. Некоторые службы, такие как сети доставки контента (CDN), используют технологию обратного прокси-сервера для максимально эффективной маршрутизации входящего трафика. Но иногда этот дополнительный слой при попытке подключения к исходному серверу веб-сайта может создавать проблемы. Когда это происходит, ваши посетители (и вы) могут столкнуться с ошибкой 502. Проверить и выяснить, является ли ваша CDN причиной этой проблемы, достаточно просто. Всё, что вам нужно сделать, это временно отключить службу, а затем проверить, правильно ли загружается сайт без неё. Процесс отключения CDN зависит от используемой вами службы.
Теперь, когда вы попытаетесь получить доступ к веб-сайту, его исходный сервер ответит на запрос без посредников. Если error 502 исчезла, вероятно, источником проблемы была ваша CDN. В большинстве случаев вам просто нужно подождать несколько часов, прежде чем снова включить службу. Конечно, обязательно проверьте и убедитесь, что ошибка больше не возникает. Если вы используете другой CDN, вам необходимо просмотреть его документацию для получения инструкций о том, как временно отключить службу.
Очистите кэш браузера
Если неполадка действительно на стороне сервера, но вам необходимо получить доступ к содержимому сайта, есть способы обойти неисправность. Один из них – кэш браузера. Современные браузеры некоторое время хранят копии веб-сайтов на своих собственных серверах, поэтому могут отображать более раннюю их версию. Чтобы загрузить страницу из кэша Google, введите cache: в поле поиска, а затем URL-адрес, который вы хотите посетить (например, cache:https://vk.com). Однако нужно помнить, что вы просматриваете устаревшую версию сайта. Чтобы избавиться от ошибки, почистите кэш своего браузера.
Удалите файлы cookie вашего браузера
Что делать с ошибкой 502? В большинстве случаев её можно исправить, просто перезагрузив страницу. Если проблема решится, значит сервер был просто временно перегружен. Поскольку такие сбои могут длиться довольно долго, повторная загрузка страницы может помочь примерно через 15 минут. Если сообщение об ошибке не исчезло, очистите кэш и файлы cookie. Может быть, что браузер на самом деле просто получил доступ к данным из внутренней памяти устройства. Удалять все файлы cookie не обязательно – в настройках браузера можно открыть и удалить только те, которые имеют отношение к соответствующему веб-сайту.
Запустите браузер в режиме инкогнито
Ошибка может быть в вашей системе, даже если код состояния указывает на что-то другое. Если при каждой попытке посетить любые сайты выскакивает Bad Gateway, скорее всего ошибка связана с вашим компьютером, браузером или брандмауэром. Для начала проверьте функциональность браузера. Первым шагом должен быть его перезапуск в режиме инкогнито. Если это не сработает как нужно, запустите браузер в безопасном режиме. Если ошибка исчезнет, значит проблема заключалась в одном из дополнений или расширений браузера, которые в безопасном режиме отключены. Для этого нужно открыть командную строку и ввести сюда полный путь расположения браузера в кавычках. У каждого разработчика браузеров есть разные команды для запуска безопасного режима:
- Firefox: «C:Program FilesMozilla Firefoxfirefox.exe» -safe-mode
- Internet Explorer: «C:Program FilesInternet Exploreriexplore.exe” –extoff
- Chrome: браузер Google не предлагает безопасный режим. Вместо этого достаточно запустить в режиме инкогнито.
Исправьте DNS-сервер
Ошибка 502 может возникнуть из-за неправильной привязки имени домена и IP-адреса. Это связано с миграцией веб-сайта на новый хост, которая обычно занимает какое-то время. Решение состоит в том, чтобы очистить кэш DNS в локальной системе так же, как вы удаляете кэш из браузера. Откройте командную строку и выполните команду:
ipconfig / flushdns
При успешной очистке кэша DNS программа выдаст сообщение «Кэш DNS очищен успешно».
Проверить логи
Логи – это записи о всех действиях, выполненных вами в любом приложении. Вы можете проверить журналы приложений и соответствующий журнал на сервере. Журналы приложений сообщат вам о том, какие страницы были запрошены во время выполнения приложения, в то время как журнал на сервере будет содержать информацию об оборудовании, отвечающем за выполнение приложения, и статусе всех подключённых к серверу устройств.
Отключить плагин CDN
Сеть доставки контента (CDN) – это сторонние сервисы для рендеринга «тяжёлого контента», который включает в себя большие изображения и видео. CDN используется приложением для поддержания эффективности. Конфигурация брандмауэра может позволить недопустимому или вредоносному контенту проходить через шлюз, что приведёт к ошибке 502 Bad Gateway. Чтобы решить эту проблему, вам просто нужно отключить CDN.
Попробуйте использовать другой браузер
Попробуйте подключиться через другой браузер. Если открытие страницы пройдёт без сбоев, то текущий стандартный браузер нужно удалить и переустановить. Если переключение браузеров проблему с ошибкой неверного шлюза не решит, нужно проверить настройки вашей сети. Самый простой вариант – перезагрузить модем и маршрутизатор. Если это не помогло, попробуйте переключиться с Wi-Fi на LAN и использовать кабельное соединение.
Перезагрузите компьютер и сетевое оборудование
Иногда 502 Bad Gateway возникает по вине интернет-провайдера. Причиной здесь является ложная запись на их DNS-сервер. Чтобы обойти сообщение об ошибке, введите другой DNS-сервер в настройках. В Windows это можно сделать в настройках соединения TCP/IP. В качестве теста вы можете получить доступ к бесплатному DNS-серверу Google – 8.8.8.8 и 8.8.4.4.
Обратитесь к своему интернет провайдеру
Если ошибка вызвана не провайдером, остаётся только ждать, пока она не исчезнет сама по себе (или использовать кэшированные версии страниц). В большинстве случаев ошибка носит временный характер и устраняется администратором в кратчайшие сроки.
Когда вы получаете ошибку 502 Bad Gateway в своем браузере, это означает, что сервер nginx или apache, который действует как шлюз, получил недействительный ответ или он не смог дать ответ. Таким образом, есть две причины, это проблема с вашим соединением или на стороне сервера возникла проблема, которая возвращает недействительный ответ. Хотя в большинстве случаях это ошибка на стороне сервера, но есть несколько нюансов, когда это может происходить и на вашей стороне. Давайте разберем ниже, что можно сделать и как исправить эту проблему.
Ошибка 502 Bad Gateway
Эта ошибка может отображаться на любом веб-сайте. И первым делом просто нажмите сочетание кнопок Ctrl+F5, чтобы обновить страницу.
1. Изменить прокси-сервер по умолчанию
Нажмите сочетание кнопок Win+R и введите inetcpl.cpl, чтобы открыть свойства интернета.
Затем перейдите во вкладку «Подключения» > «Настройка сети» > поставьте флажок «Автоматическое определение параметров» и убедитесь что не включён «Использовать прокси-сервер для локальных подключений«. Нажмите «Применить» и «OK». Если вы используете стороннюю прокси-службу, обязательно отключите ее.
2. Сбросить DNS, сбросить Winsock и сбросить TCP/IP
Иногда, веб сайты меняются и переезжают с сервера на сервер, а DNS на вашем ПК все еще помнит старый ip адрес вашего сайта, что приводит к 502 Bad Gateway ошибке. Открываем командную строку от имени администратора и вводим по порядку команды, нажимаю Enter после каждой.
netsh winsock reset
— Сброс Winscock.ipconfig /flushdns
— Сброс DNS-кеша.netsh int ip reset resettcpip.txt
— Сброс TCP/IP.
3. Проверьте сетевые кабели, перезапустите маршрутизатор
Убедитесь, что ваши кабели правильно подключены либо к компьютеру, либо к вашему маршрутизатору. Если вы используете Wi-Fi-соединение, обязательно перезапустите маршрутизатор один раз. Попробуйте удалить все известные WiFi сети и заново подключится к своей. Иногда большой список сетей, которые вы не используете может вызывать проблемы.
4. Изменить DNS
Попробуйте изменить DNS на общедоступный DNS, такой как Google или Yandex. Перейдите в параметры адаптера TCP/IPv4, поставьте точку на «Использовать следующий DNS-серверов» и введите на выбор ниже адрес.
- DNS Google 8.8.8.8 — 8.8.4.4
- DNS Yandex 77.88.8.8 — 77.88.8.1
5. Сбросьте настройки браузера по умолчанию
Сброс вашего браузера может помочь решить проблему с ошибкой 502 Bad Gateway. Откройте параметры вашего браузера и поищите настройку сброса параметров по умолчанию. Это отключит все расширения, настройки и темы. Помимо этого, настройки содержимого будут сброшены. Файлы cookie и кеш будут удалены.
Смотрите еще:
- Яндекс Браузер или Google Chrome выдают черный экран
- Исправить ошибку NETWORK_FAILED в браузере Chrome
- ERR_INTERNET_DISCONNECTED ошибка в Google Chrome
- Как скрыть панель задач в Windows 10
- Как переустановить браузер EDGE в Windows 10
[ Telegram | Поддержать ]
Ошибка 502 Bad Gateway: что значит
Файлы любого сайта находятся на физическом сервере. Чтобы их получить и отобразить веб-ресурс на компьютере, браузер делает запрос на сервер. Если он по какой-либо причине не передал файлы, появляется ошибка 500-511.
Ошибка 502 Bad Gateway возникает при неправильной работе прокси-сервера, DNS-сервера и чаще всего сервера, на котором размещён сайт. Проблема может распространяться как на весь ресурс, так и на отдельные страницы. Это зависит от характера проблемы. Существуют разновидности 502 ошибки: Bad Gateway Nginx, Bad Gateway Apache. Об их отличиях мы расскажем ниже. Также эта ошибка может иметь формулировки:
- Bad Gateway: Registered endpoint failed to handle the request, Temporary Error (502),
- Error 502,
- Bad 502 Gateway,
- 502 Error,
- 502. That’s an error,
- 502 Service Temporarily Overloaded,
- 502 Server Error: The server encountered a temporary error and could not complete your request,
- 502 – Web server received an invalid response while acting as a gateway or proxy server,
- 502 Bad Gateway Nginx,
- 502 Proxy Error,
- HTTP 502,
- HTTP Error 502 Bad Gateway.
Причины возникновения ошибки 502 Bad Gateway
- Первая и основная причина ― перегрузка сервера. Перегрузка может быть вызвана несколькими проблемами:
- Большое количество посетителей одновременно. Веб-ресурс может посещать ограниченное количество посетителей. Сколько человек может посетить сайт зависит от возможностей сервера (размера оперативной памяти) и настроек, которые сделал создатель ресурса. Если по какой-либо причине на сайт зайдёт больше пользователей, чем запланировано, сервис может не справиться и страница выдаст код 502. Такое случается при рекламных акциях и распродажах в интернет-магазинах.
- Атака хакеров или DDoS-атака. Эта проблема связана с предыдущей причиной перегрузки. Хакер имитирует большой наплыв пользователей, из-за чего сервер выходит из строя. Такие атаки могут быть использованы для снижения продаж.
- Оверселлинг. Повторная перепродажа уже проданных вычислительных ресурсов сервера (CPU, RAM, HDD). Как это работает? При покупке услуги хостинга у клиента есть ограниченное количество ресурсов. При создании сайта создатели часто берут хостинг с запасом ресурсов на случай, если в будущем посещаемость веб-ресурса вырастет или понадобится больше памяти для файлов сайта. Из-за этого некоторое количество ресурсов простаивает. По статистике, только 20% клиентов используют свои серверы на 80%. Остальным 80% администраторов хватает 20%, следовательно большая часть сервера не используется. С точки зрения покупателя, это разумно. Сайт должен быть готов к неожиданностям. Хостинг-провайдеру это невыгодно. Бывает, что безответственные провайдеры перепродают неиспользованные ресурсы. А когда первоначальный владелец хочет использовать свои приобретенные ресурсы, случается перегрузка сервера.
- Плохая оптимизация сайта. Настройки ресурса сделаны так, что маленькое количество посетителей генерирует много запросов. В этом случае нужно оптимизировать работу сервера с пользовательскими запросами.
- Второй причиной возникновения кода 502 могут явиться ошибки РНР. Если для расширения функционала сайта в панель управления были добавлены некорректно настроенные плагины, они могут выдавать проблемы в своей работе. Вместе с ними ошибку покажет и сайт целиком. Также если код сайта написан неправильно, запросы могут давать отрицательный результат.
- Ошибка браузера. Проблема может быть на стороне пользователя, если у него установлены расширения, которые нарушают соединение с сервером сайта.
Чем отличается ошибка 502 Bad Gateway Nginx
Между браузером и сервером может стоять веб-сервер. Он используется для снижения нагрузки на сервер, аутентификации пользователей и многого другого. Самые популярные программы для создания веб-сервера ― Nginx и Apache. Так как веб-сервер является посредником между браузером и сервером, то именно он будет оповещать пользователя о проблеме. Поэтому в зависимости от веб-сервера в сообщении вы можете увидеть надпись Bad Gateway Nginx или Bad Gateway Apache. При этом причины возникновения проблемы одинаковы.
Проверьте количество свободной памяти. Это можно сделать двумя способами.
Способ 1 ― введите команду top
в командной строке сервера:
Mem ― вся оперативная память.
Swap ― раздел подкачки.
Посмотрите на строку Mem ― free. Это количество свободного места на сервере. Если там указано маленькое число, ошибка 502 Bad Gateway появляется из-за нехватки памяти. Увеличьте количество оперативной памяти и проблема пропадёт. Также в результатах можно будет увидеть, какую нагрузку на сервер даёт каждый отдельный процесс.
Способ 2 ― введите команду free -m
.
Mem ― вся оперативная память.
Swap ― раздел подкачки.
В строке Mem ― free показано свободное место на сервере. Если там маленькое число, увеличьте количество оперативной памяти.
Проверьте логи сервера. Если проблема возникла в момент каких-либо обновлений на сайте, проверьте журнал изменений, чтобы отменить те доработки, которые нарушили функциональность сервера. Также в логах можно увидеть DDos-атаку. Если дело в нехватке памяти, в логах отобразится ошибка OOM (out of memory).
Проверьте плагины в WordPress. Если ваш сайт создан на WordPress, некоторые плагины и темы могут нарушать работу сервера.
- 1. Войдите в панель управления WordPress.
- 2. Перейдите во вкладку «Плагины» ― «Установленные».
- 3. Нажмите Деактивировать у плагина, который, как вам кажется, повлиял на работу сайта:
Можно сразу отключить все плагины, чтобы убедиться, что один из них влияет на работу сервера. И далее по очереди включайте плагины, пока не найдёте конкретный плагин-виновник.
Проверьте, как работают вспомогательные службы, например MySQL и Memcached. Иногда они могут стать причиной 502 ошибки.
Свяжитесь со службой поддержки своего хостинг-провайдера. Если ничего из вышеперечисленного не помогло, обратитесь к службе поддержки и подробно опишите проблему и действия, которые вы предприняли до обращения.
Если сайт находится на VPS
Чаще всего на VPS используется связка: Nginx + бэкенд-сервер (Apache, PHP-FPM, Gunicorn, NodeJS). Ошибка 502 возникает в случае, если Nginx не может получить ответ от этих сервисов. Клиенты с VPS сталкиваются с «502 Bad Gateway», когда:
- какой-то из сервисов выключен. Перезапустите веб-сервер Apache, PHP-FPM либо другой сервис, с которым работает Nginx;
- между Nginx и бэкенд-сервером некорректно настроена связь. Например, Nginx производит обращение к порту 8080, а веб-сервер Apache «слушает» на 8081. В этом случае необходимо скорректировать настройки веб-сервера.
Если вам не удалось самостоятельно устранить ошибку 502, обратитесь в техподдержку. В заявке укажите:
- Точное время наблюдения проблемы.
- Название сайта, на котором была замечена проблема.
- Если ошибка отображается не сразу, а после определённых действий (добавление изображения, отправка формы с сайта, импорт файлов), подробно опишите порядок действий, по которому мы сможем воспроизвести проблему.
- Если для воспроизведения проблемы необходимо авторизоваться в административной части сайта, предоставьте логин и пароль для доступа.