#ssl #heroku #cloudflare
Вопрос:
Мое приложение Rails, которое отлично работало в течение многих лет, внезапно начало возвращать ошибки Cloudflare 520. В частности, api.exampleapp.com
внутренние вызовы возвращают 520, в то время как обращения к www.exampleapp.com
поддомену интерфейса работают просто отлично.
Самое сложное в этом то, что ничего не изменилось ни в моей конфигурации, ни в коде вообще. Cloudflare считает, что это происходит, поскольку сервер Heroku возвращает пустой ответ.
> GET / HTTP/1.1
> Host: api.exampleapp.com
> Accept: */*
> Accept-Encoding: deflate, gzip
>
{ [5 bytes data]
* TLSv1.2 (IN), TLS alert, close notify (256):
{ [2 bytes data]
* Empty reply from server
* Connection #0 to host ORIGIN_IP left intact
curl: (52) Empty reply from server
error: exit status 52
На конце Heroku мои журналы, похоже, даже не регистрируют запрос, когда я нажимаю на любой из этих URL-адресов. Я также дважды проверил свою настройку SSL (сертификат происхождения, созданный в Cloudflare, установленный на Heroku), на всякий случай, и он кажется правильным и не истек.
Я в полном замешательстве. Приложение не работает уже пару дней, пользователи жалуются, и ни одна из групп обслуживания клиентов не отвечает, несмотря на то, что является платным клиентом. Мои знания в области разработки довольно ограничены, поэтому я очень ценю любую помощь или зацепки!
Ответ №1:
Добро пожаловать в клуб: https://community.cloudflare.com/t/sometimes-a-cf-520-error/288733 Похоже, это проблема Cloudflare, возникшая в конце июля и затрагивающая сотни сайтов, работающих в самых разных конфигурациях. Прошел почти месяц с момента первого сообщения о проблеме, Cloudflare «исправила» ее дважды, но она все еще существует. Очень неприятно.
Комментарии:
1. Это уже исправлено? У меня все еще есть эта проблема сейчас.
2. Не для меня и не для десятков людей в сообществе Cloudflare — community.cloudflare.com/t/… . Но Cloudflare, похоже, все равно — они считают, что мы все, должно быть, делаем что-то не так.
Ответ №2:
Измените журналы веб-сервера в информационное состояние и проверьте, не превышает ли ваше приложение некоторые директивы HTTP/2 при обработке подключения.
Если это так, попробуйте увеличить размер директивы:
#nginx
server {
...
http2_max_field_size 64k;
http2_max_header_size 64k;
}