Можно ли увеличить время ожидания CloudFlare?

Можно ли увеличить время ожидания CloudFlare? Если да, то как?

Мой код требует времени для выполнения, и я не планировал выполнять его с помощью Ajax в ближайшие дни.

введите описание изображения здесь


person kqw    schedule 22.07.2016    source источник
comment
Вы можете обрабатывать запросы, которые занимают более 100 секунд, через субдомен, которого нет в Cloudflare.   -  person Rudey    schedule 19.02.2017
comment
@RuudLenders: Я спросил об этом CloudFlare, и они сказали следующее: я предлагаю проверить, почему для отчетов требуется более 100 секунд. Отключение Cloudflare на поддомене позволит злоумышленникам узнать о вашем исходном IP-адресе, и злоумышленники будут атаковать напрямую, минуя Cloudflare.   -  person gordon613    schedule 28.05.2017
comment
Тайм-аут Cloudflare дает 524. Если вы получаете 504, это означает, что ваш сервер истекает.   -  person JesusIniesta    schedule 12.04.2021


Ответы (4)


Нет, CloudFlare предлагает такую ​​настройку только для планов Enterprise.

  • CloudFlare истечет время ожидания, если ему не удастся установить HTTP-рукопожатие через 15 секунд.
  • CloudFlare также будет ждать 100 секунд ответа HTTP от вашего сервера, прежде чем вы увидите ошибка тайм-аута 524.
  • Помимо этого, на исходном веб-сервере могут быть тайм-ауты.

522 на CloudFlare с SYN/ACK 522 на CloudFlare с тайм-аутом ACK

Похоже, вам нужно межпроцессное взаимодействие. HTTP не должен использоваться в качестве механизма для выполнения блокирующих задач без отправки ответов, вместо этого такие действия должны быть абстрагированы от службы, отличной от HTTP, на сервере. Используя RabbitMQ (или любой другой MQ), вы можете затем передавать сообщения из элемента HTTP вашего сервера в процесс обработки. службы на вашем веб-сервере.

Публикация/подписка IPC

person mjsa    schedule 27.07.2016
comment
Кажется, что 90-секундный тайм-аут теперь равен 60 секундам. - person Max; 05.02.2019

Я общался с Cloudflare по этому же вопросу, а также с техподдержкой RabbitMQ.

RabbitMQ предложил использовать Web Stomp, основанный на веб-сокетах. Однако Cloudflare предложил...

Веб-сокеты будут создавать постоянное соединение через Cloudflare, и тайм-аута как такового нет, но лучший способ решить эту проблему — просто обработать запрос в фоновом режиме и ответить асинхронно, а также обслуживать страницу «Загрузка ...» или аналогичную. чем заставлять пользователя ждать 100 секунд. Это также улучшит пользовательский опыт для пользователя.

ОБНОВЛЕНИЕ:

Для полноты картины я также запишу здесь, что я также спросил CloudFlare о запуске отчета через поддомен и его «сером облаке», и они ответили следующее:

Я предлагаю проверить, почему для отчетов требуется более 100 секунд. Отключение Cloudflare на поддомене позволит злоумышленникам узнать о вашем исходном IP-адресе, и злоумышленники будут атаковать напрямую, минуя Cloudflare.

ДАЛЬНЕЙШЕЕ ОБНОВЛЕНИЕ

В конце концов я решил эту проблему, запустив отчет с использованием потока и используя AJAX для «опроса», был ли отчет создан. См. раздел обход тайм-аута CloudFlare в 100 секунд.

person gordon613    schedule 23.05.2017
comment
без сохранения соединения запроса означает, что нам нужен двусторонний канал связи, чтобы ответ был возвращен клиенту после завершения исходного запроса. Таким образом, мы не можем использовать ajax (на стороне интерфейса), как обычно, или просто использовать его, чтобы просто опубликовать запрос и почти сразу получить ответ OK. Фактический результат будет получен, например, с помощью SignalR (что должно быть лучше, чем опрос) - person Hopeless; 25.03.2020

Я знаю, что это нельзя рассматривать как решение, но есть два способа избежать этого. 1) Поскольку этот тайм-аут часто связан с длительной генерацией чего-либо, этот тип работ может быть выполнен через crontab или, если у вас есть доступ к SSH, вы можете напрямую запустить команду PHP для выполнения. В этом случае соединение не обслуживается через Cloudflare, поэтому оно работает до тех пор, пока ваша конфигурация позволяет ему работать. Проверьте в Google, как запускать скрипты из командной строки или как определять их в crontab, используя /usr/bin/php /direct/path/to/file.php

2) Вы можете создать поддомен, который не добавляется в cloudlflare, переместить туда свой скрипт и запускать их напрямую через URL, вызов Ajax или что-то еще.

На форумах сообщества Cloudflare есть хороший ответ по этому поводу:

Если вам нужны скрипты, которые выполняются дольше 100 секунд без возврата каких-либо данных в браузер, вы не можете запускать их через Cloudflare. Есть несколько вариантов: запустить скрипты через субдомен с серым облаком или изменить скрипт так, чтобы он запускал длительный фоновый процесс и быстро возвращал статус, который браузер может опрашивать до тех пор, пока фоновый процесс не завершится, после чего точка полный ответ может быть возвращен. Это то, как большинство людей делают этот тип действий, поскольку держать открытые HTTP-соединения в течение длительного времени ненадежно и может быть очень обременительным.

Эта тема на Stackoverflow высоко в поисковой выдаче, поэтому я решил записать этот ответ для тех, кому он покажется полезным.

person Eryk Wróbel    schedule 31.03.2020

Cloudflare не вызывает ошибки 504 по тайм-ауту

  • 504 — это тайм-аут, инициированный вашим сервером и не имеющий ничего общего с Cloudflare.
  • 524 — это тайм-аут, вызванный Cloudflare.

См.: https://support.cloudflare.com/hc/en-us/articles/115003011431-Troubleshooting-Cloudflare-5XX-errors#502504error

Ошибка 524? Есть обходной путь:

Как уже упоминалось @mjsa, Cloudflare предлагает настройки тайм-аута только для корпоративных клиентов, что не подходит для большинства людей.

Однако вы можете отключить проксирование Cloudflare для этого конкретного (суб)домена, превратив оранжевое облако в серое:

До:

  • введите здесь описание изображения

После:

  • введите здесь описание изображения

Примечание: это отключит дополнительные функции для этого конкретного (суб)домена, включая маскировку IP-адресов и SSL-сертификаты.

Как говорится в документации Cloudflare:

Если вы регулярно запускаете HTTP-запросы, выполнение которых занимает более 100 секунд (например, экспорт больших данных), рассмотрите возможность переноса этих длительных процессов на субдомен, который не проксируется Cloudflare. Для этого поддомена значок оранжевого облака будет изменен на серый в настройках DNS Cloudflare. Обратите внимание, что вы не можете использовать правило страницы, чтобы обойти ошибку 524.

person JesusIniesta    schedule 12.04.2021