Ошибка 504 Gateway Timeout через прокси
Сервер-посредник ждал ответа от следующего сервера в цепочке и не дождался. Важно понять, какой именно посредник ответил.
Обновлено · Редакция Prokso
- Код 504 отправляет посредник, который не дождался ответа от следующего сервера в цепочке
- Чаще всего сайт обрабатывает запрос слишком долго или перегружен
- Повторите запрос через минуту, а затем откройте сайт без прокси
Что означает ошибка
По стандарту HTTP (RFC 9110) код 504 отправляет сервер, работающий как шлюз или прокси, когда он не получил вовремя ответа от сервера, к которому должен был обратиться, чтобы выполнить запрос.
Посредников в цепочке может быть несколько: прокси, через который вы работаете, а дальше — CDN, балансировщик или nginx перед самим сайтом. 504 может прислать любой из них. По оформлению страницы ошибки часто видно, кто ответил: у Cloudflare, например, собственные коды 522 и 524.
От обычного тайм-аута в программе 504 отличается тем, что ответ всё же пришёл — просто это сообщение посредника о том, что он не дождался.
Причины
- Сайт обрабатывает запрос слишком долго. Тяжёлый отчёт, выгрузка, поиск без ограничений — сервер сайта не успевает за время, которое даёт ему посредник.
- Сайт перегружен или недоступен. Посредник перед сайтом не может достучаться до сервера с данными.
- Медленный исходящий адрес. Резидентские и мобильные IP — это устройства с домашним и мобильным интернетом, и скорость у них разная.
- Большой объём ответа. Большие файлы и страницы отдаются дольше, чем рассчитано в настройках посредника.
Как исправить
- Повторите запрос через минуту: 504 часто временная.
- Откройте сайт без прокси. Если 504 и там — проблема на стороне сайта, и через прокси её не исправить.
- Посмотрите на страницу ошибки: оформление Cloudflare указывает на сайт за Cloudflare, тогда см. ошибку 524 и 522.
- Уменьшите объём одного запроса: страницы результатов, фильтры по дате, выгрузка частями.
- На фиксированном IP смените сессию — возьмите другой порт из диапазона 10000–20000, если текущий адрес отвечает медленно.
- Сравните с тайм-аутом прокси: если программа обрывает соединение сама, без кода 504, причина другая.
Как проверить, что всё заработало
В проверке прокси видно время ответа адреса. Если прокси отвечает быстро, а 504 приходит только с одного сайта и только на тяжёлых запросах — задержка на стороне сайта.
Диагностика за 2 минуты
Сначала вставьте строку в проверку прокси. Если там прокси работает, причина в программе или её настройках. Если нет — проверьте строку из терминала:
curl -v -x "http://ЛОГИН:ПАРОЛЬ@gw.prokso.com:823" https://api.ipify.org
- Строка
< HTTP/1.1 407сразу послеCONNECT— отвечает прокси. Название после кода, напримерNO_USER, подсказывает причину. - Прокси ответил на
CONNECTкодом 200, а дальше пришёл другой код — прокси работает, этот ответ дал сайт. - Никакого ответа, только тайм-аут — соединение не дошло до прокси: проверьте хост, порт и сеть.
Вопросы и ответы
504 — это ошибка прокси?
Не обязательно. Код отправляет тот посредник, который не дождался ответа. Часто это сервер перед самим сайтом, а не прокси.
Чем 504 отличается от 502?
502 означает, что посредник получил от следующего сервера неправильный ответ или не смог соединиться. 504 — что ответа не было вовремя. О 502 — на <a href="/ru/errors/502-bad-gateway">отдельной странице</a>.
Поможет ли увеличить тайм-аут в программе?
Тайм-аут в программе не влияет на посредника, который уже ответил 504. Он помогает только тогда, когда программа сама прекращает ожидание раньше, чем приходит ответ.
Другие ошибки прокси
Резидентские $1.59, мобильные $2.50, серверные $0.65 за 1 ГБ
Регистрация за минуту, доступы сразу после оплаты.