LINUX.ORG.RU
ФорумAdmin

Nginx ERR_CONNECTION_RESET

 , , , ,


0

3

Когда открываешь сайт в хроме в режиме инкогнито, то первый запрос висит около 30 сек. и потом ERR_CONNECTION_RESET. Повторная перезагрузка страницы моментально все загружает.

Снова закрываю окно, открываю в инкогнито - та же самая проблема.

Бывает по другому - не грузятся js скрипты - тоже ERR_CONNECTION_RESET

Бывает скрипт загрузится через 40 сек., сервер отдаст 200 код, но все равно браузер ERR_CONNECTION_RESET выдает

Бывает JS скрипт грузит 10 секунд

HTTP/1.1 200 OK
Server: Angie
Date: Thu, 23 Apr 2026 05:19:27 GMT
Content-Type: application/javascript
Last-Modified: Fri, 20 Mar 2026 03:13:15 GMT
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"69bcbb4b-2953ee"
Cache-Control: public, max-age=100000
Content-Encoding: gzip


Пробовал отключать chunked_transfer_encoding off

Есть особенность: виртхост - 2 домена. Первый - основной работает без проблем, а со вторым такие проблемы. В логах ничего.

С первого раза не запускается сайт. Если загружать не браузером - то любой запрос с 1 раза проходит нормально - вообще без проблем.
Пробовал с хрома, оперы, никаких расширений нет. ВПН нет. Симптомы вообще не понятны, в какую сторону копать

★★★★

Последнее исправление: gobot (всего исправлений: 2)
Ответ на: комментарий от router

да какие там соединения. В мобильном браузере то же самое. Обновляешь 5 раз - потом нормально работает. С 1 раза не заходит. Как будто какой-то «прогрев»

gobot ★★★★
() автор топика
Ответ на: комментарий от thesis

Если б знал что чинить - починил, но в логах ничего нет. Почему RESET ошибка - это на уровне TCP же, причем тут сайт

Ну в nginx есть опция reset_timedout_connection когда клиент долго думает он его соединение закрывает и опционально может ещё RST пакет прислать. Грешил на это сначала, send_timeout был 3, потом увеличил до 10 - не помогло. Да и в логах пусто, если бы лимит срабатывал он бы в ошибки писал, но их нет

gobot ★★★★
() автор топика
Ответ на: комментарий от LightDiver

В FF открывает с 1 раза. Да и вообще сейчас все нормализовалось почему то. И в хроме открывает. Но этот затык проявляется спонтанно, когда не ждешь

Вот спустя минуту в хроме снова затык

gobot ★★★★
() автор топика
Последнее исправление: gobot (всего исправлений: 1)
Ответ на: комментарий от gobot

Хром (и все браузеры на его движке) использует алгоритм «Happy Eyeballs». Он одновременно пытается подключиться по IPv6 и IPv4 и выбирает тот протокол, который ответил первым. Однако у него есть жесткая встроенная проверка: если система считает, что у нее нет полноценного IPv6-интернета (например, нет дефолтного маршрута ::/0 или адрес Link-Local), но при этом DNS-сервер отдал AAAA-запись (IPv6), хром может либо намертво зависнуть, либо сбросить подключение.

К слову, фф тоже его реализовал, но с оптимизациями и на раст. Раньше тоже мог долго виснуть. Сейчас у фф это отдельный модуль на раст, вроде как.

Хтя я могу и ошибаться. Просто недавно сталкивался как раз с чем то п хожим.

LightDiver ★★★★★
()
Ответ на: комментарий от router

Совет типа: «дебажить хром», «изучать соединения» - тупой. На это могут уйти месяцы просто так потерянного времени. Твой эпистолярный жанр не интересен

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

Совет типа: «дебажить хром», «изучать соединения» - тупой.

Твой тезис «что тут думать, трясти надо» - намного более тупой.

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 1)

Восстановил тему, почистил.
Господа, давайте без оскорблений.

Zhbert ★★★★★
()
Ответ на: комментарий от gobot

Совет типа: «дебажить хром», «изучать соединения» - тупой.

Почему ты так думаешь?
Какое решение ты видишь, если очевидный поиск проблемы для тебя кажется тупым?

Zhbert ★★★★★
()

Симптомы вообще не понятны, в какую сторону копать

Запускаешь браузер, открываешь консоль, смотришь в разделе Сеть где падает.

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

Скорее всего где-то какой-то CDN в таймаут не пролезает, а со второго раза дотягивается. Скорее всего проблемы в РКН, как обычно, где-то что-то поблочено или сокрыто за Cloudflare каким.

Это единственный путь.

Zhbert ★★★★★
()
Последнее исправление: Zhbert (всего исправлений: 2)
Ответ на: комментарий от anonymous

в какую сторону копать

В сторону РКН.

Я серьёзно. Проверяйте для каждого из имён:

openssl s_client -connect <server_IP>:443 -servername <доменное имя> </dev/null>/dev/null

Один из доменов за CDN типа CF?

anonymous
()

Что удалось выяснить за это время

1) В Firefox работает нормально
2) Зависает именно первое соединение. Если потом перезагружать сайт, то тоже все нормально. Кеш отключен, открываю во вкладке инкогнито
3) HTTP - работает всегда, зависает только HTTPS
4) ipv6 для домена отключен (записи AAAA нет в CF)

Писал провайдеру - ну там глухо - ничего не знаю ничего не ведаю. Проверял РКН - блокировок нет

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

Проверял РКН - блокировок нет

Ты проверил прямую связь до сервера. Блокируется CF. У тебя нет даже искры понимания, чем ты занимаешься.

anonymous
()
Ответ на: комментарий от Zhbert

1) Какая консоль в мобильном хроме? 2) запускал хром с параметрами --enable-logging --v=1 - да пишется какой то лог chrome_debug.log но там вообще чушь всякая, ничего нет

Histogram: Startup.LoadTime.RecordedProcessCreation recorded 1 samples, mean = 1.0 (flags = 0x1)
0  O                                                                         (0 = 0.0%)
1  -O                                                                        (1 = 100.0%) {0.0%}
2  O                                                                         (0 = 0.0%) {100.0%}


вот типа этого. Есть сборки какие то дебажные, но это капец месяцы уйдут на ковыряние


Скорее всего где-то какой-то CDN

Какой CDN? Ещё раз повторю: виртхост имеет 2 домена. 1 работает стабильно, второй с первого раза никогда не соединяется, либо соединяется - грузит главную страницу, но не грузит JS скрипт один, без которого не работает.

gobot ★★★★
() автор топика
Ответ на: комментарий от anonymous

С конектом все нормально DONE

* В консоле типа CURL - все стабильно загружает
* Не работает только в Хроме и только 1 конкретный домен на виртхосте в nginx (в FF норм)

Один из доменов за CDN типа CF?

Нет, я прокси не использую, в CF только NSы остались

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

Ты либо s_client запускаешь через одного оператора, а браузер через другого, либо где-то ещё врёшь.

Сравнение host <домен> или dig <домен> может добавит ясности.

anonymous
()
Ответ на: комментарий от Zhbert

Каких некоторых зон? У меня 1 сертификат LE - там 4 домена, 2 в зоне RU (1 криво работает, второй нормально) один в COM (работает нормально)

CDN вообще ни при чем в моей случае

gobot ★★★★
() автор топика
Последнее исправление: gobot (всего исправлений: 1)
Ответ на: комментарий от Aceler

Немого поснифил

15:54:46.079877 IP chrome.39281 > server.443: Flags [S], seq 3121469215, win 64240, options [mss 1440,nop,wscale 8,nop,nop,sackOK], length 0
15:54:46.079889 IP server.443 > chrome.39281: Flags [S.], seq 2142390121, ack 3121469216, win 64240, options [mss 1460,nop,nop,sackOK,nop,wscale 9], length 0
15:54:46.158956 IP chrome.39281 > server.443: Flags [.], ack 1, win 1029, length 0
15:54:46.159924 IP chrome.39281 > server.443: Flags [.], seq 1:1441, ack 1, win 1029, length 1440
15:54:46.159929 IP server.443 > chrome.39281: Flags [.], ack 1441, win 132, length 0
15:54:50.116587 IP server.443 > chrome.39101: Flags [.], seq 1:1441, ack 1753, win 133, length 1440
15:54:50.116623 IP server.443 > chrome.39105: Flags [.], seq 1:1441, ack 1817, win 133, length 1440
15:54:51.159157 IP server.443 > chrome.39281: Flags [F.], seq 1, ack 1441, win 132, length 0
15:54:51.444584 IP server.443 > chrome.39281: Flags [F.], seq 1, ack 1441, win 132, length 0
15:54:51.732582 IP server.443 > chrome.39281: Flags [F.], seq 1, ack 1441, win 132, length 0
15:54:52.269253 IP chrome.39096 > server.443: Flags [R.], seq 3288, ack 47851, win 0, length 0
15:54:52.356629 IP server.443 > chrome.39281: Flags [F.], seq 1, ack 1441, win 132, length 0
15:54:53.508586 IP server.443 > chrome.39281: Flags [F.], seq 1, ack 1441, win 132, length 0


Соединение открывается, судя по SYN-ACK от сервера. НО, потом они финализируется сервером, через 5 сек. Это наверное из-за настройки

client_header_timeout 5;

То есть хром не шлет заголовки в течении 5 сек.


MTU проверь

А где это проверять? И на что менять?

gobot ★★★★
() автор топика
Ответ на: комментарий от Aceler

Посмотрел с другой стороны через WireShark, после соединения хром посылает Client Hello SNI=domain и на это все. Потом идут Retransmission на сервер, как я понял, потому что сервер не получил ничего...

Это через TLS1.2
Следующий запрос идет уже через TLS1.3 и он проходит - сайт открывается

gobot ★★★★
() автор топика
Последнее исправление: gobot (всего исправлений: 1)

Заметил что если загрузка идет по TLS1.2 - то не грузит. Первый домен всегда использует TLS1.3 поэтому работает, второй домен либо 1.2 либо 1.3. Если начинает грузить с 1.3 то нормально, если 1.2 то висит бесконечно

Пробовал в nginx
ssl_protocols TLSv1.3

Но все равно хром сначала грузит по 1.2, где то 5 попыток, потом переходит на 1.3 и загружает нормально

Что может быть?

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot
15:54:46.158956 IP chrome.39281 > server.443: Flags [.], ack 1, win 1029, length 0
15:54:46.159924 IP chrome.39281 > server.443: Flags [.], seq 1:1441, ack 1, win 1029, length 1440

15:54:52.269253 IP chrome.39096 > server.443: Flags [R.], seq 3288, ack 47851, win 0, length 0

У тебя RST на сервер прилетает не с того порта, который начал соединение, клиент не отвечает ACK на FIN, как будто у него с сервером разные состояния сессии.

Возможно, ClientHello целиком в пакет не влезает, а следующие его части дропаются. Потому TLS 1.3 с одним rtt не работает, идёт фоллбек на 1.2.

Я всё ещё не могу исключить мента посередине, но тебе виднее. Стоит сравнивать сессии на клиенте и сервере.

anonymous
()
Ответ на: комментарий от anonymous

У тебя RST на сервер прилетает не с того порта

Не увидел разные seq, отмена.

anonymous
()
Ответ на: комментарий от anonymous

После отсылки серверу Client Hello SNI= больше ничего от сервера не передается, клиент шлет RST, потом начинает новое соединение раз 5 подряд, потом думает где-то пол минуты (ничего не делая) и переходит на TLS1.3 - и нормально загружает сайт

gobot ★★★★
() автор топика
Ответ на: комментарий от Dimez

В разных сетях конечно

Я делал даже эксперимент, создал такой же виртхост в моей локальной сети - скопировал сертификаты с рабочего сервера и в hosts прописал адрес 192.168... В этой конфигурации работает нормально

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

В разных сетях конечно

Ты можешь нормально ответить хоть раз? :) Ты в РФ, веб-сервер вне РФ? Вот и ответ. И почему «конечно»?

Я делал даже эксперимент

Лучше бы vpn попробовал, чесслово.

Dimez ★★★★★
()
Ответ на: комментарий от Dimez

Я в РФ и сервер в РФ

И почему «конечно»?

потому что сейчас не работают сервера за границей

Лучше бы vpn попробовал, чесслово

ну допустим через ВНП работает. Дальше что, кому от этого легче?

В общем локализовал - запустил хром --ssl-version-min=tls1.3
Так работает

TLS1.2 - не работает. Первый домен всегда работает через TLS1.3. Почему так не знаю. От сертификата вроде не зависит это, хотя сертификат один, на нем 4 домена

+ FF - тоже всегда использует TLS1.3 на всех доменах

gobot ★★★★
() автор топика
Последнее исправление: gobot (всего исправлений: 1)
Ответ на: комментарий от gobot

Я в РФ и сервер в РФ

Ну наконец-то хоть что-то, не прошло и полгода.

потому что сейчас не работают сервера за границей

Ох уж эти сказочники :))

ну допустим

Уже неактуально, учитывая РФ

TLS1.2 - не работает

Крути настройки nginx’а.

Dimez ★★★★★
()
Ответ на: комментарий от gobot

Мне попадалась информация, что ркп не любит tls 1.2. Причину не знаю

Проверь настройки сайта

И заодно что ты внес в DNS. Вряд ли там может быть версия, но все равно проверь

router ★★★★★
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария