Size: a a a

2017 October 05

DN

Dmitry Nagovitsin in nginx_ru
Блин вы гоните
источник

DN

Dmitry Nagovitsin in nginx_ru
Ограничивать по ипу хуево
источник

DN

Dmitry Nagovitsin in nginx_ru
Как ни крути
источник

GK

Georgiy Kashintsev in nginx_ru
а по ип никто и не предлагает
источник

GK

Georgiy Kashintsev in nginx_ru
вариант по куке был
источник

GK

Georgiy Kashintsev in nginx_ru
и по ип+юзерагент
источник

DN

Dmitry Nagovitsin in nginx_ru
Все говно
источник

DI

Dmitry Ishutkin in nginx_ru
короче, есть нечто (чисто внутри корпоративное, для сотрудников), прекрасно работающее в Северной Америке. у пользователей из офиса США проблем нет никаких вообще. У нас из РФ проблем нет тоже.

Но есть китайцы... Ходить прямо в NY из Китая немного долго и тормозно.

Поставил им две прокси в Шанхае и Гонконге. Просто дешманская виртуалка облаке Алибабы с nginx, в конфиге которого два location с proxy_pass

Один location тупо пропускает все через себя насквозь, ничего даже не кэшируя (это бэкенд для JS морды, там один хрен всякие ресты, которые кэшировать и нельзя и без толку)

Второй location для картиночек, там включен кэш, конечно.

Смысл всего этого действа в том, что или из-за великого китайского файрвола или еще по какой причине доступ напрямую "китаец -> NY" работает гораздо медленнее, чем доступ "китаец -> прокси в шанхае -> NY" или "китаец -> прокси в Гонконге -> NY". Ну вот так там устроена сеть, видимо, что от китайца до прокси и от прокси до NY работает быстрее, чем напрямую мимо проксей. Быстрее - это в пять раз, так что приседания имеют смысл.

Клонировать бэкенд из NY и ставить ближе прямо в Гонконг и Шанхай нет смысла никакого. Он все равно будет в овер 90% случаев ходить в базу, которую клонировать нельзя, это адов энтерпрайз и вообще AS/400 и DB2. То есть притащить бэкенд - быстрее не станет, только геморроя будет больше, чем с тупой проксей.

В чем собственно проблема. Когда по ресурсу одновременно лазают несколько китайцев в китайском офисе, их сессии путаются между собой! Такое впечатление, что в ответ на запрос одного ему иногда (очень иногда) прилетает ответ на запрос другого, с кукой этого другого.

Ессно выглядит как будто юзер "перелогинился в другого" (userid в сессионной куке).

Первое что сделал, выключил кэш вообще, для всех запросов (не понимаю, как может повлиять, но мало ли).

Есть ощущение, что путаются запросы не из-за nginx на проксях вообще, а из-за какого-то другого говна посередине, между юзерами и проксями. Например, офисный шлюз (путаются юзеры, сидящие в одном офисе за разными компами). Это железка Fortigate. Но доказать этого я не могу и не представляю как.
источник

DI

Dmitry Ishutkin in nginx_ru
сессии на бэкенде путаться не могут, это не server side sessions
источник

DI

Dmitry Ishutkin in nginx_ru
в процессе разборок все было максимально упрощено, это просто шифрованная кука, в которой небольшой словарик, ну по сути user_id и всё.
источник

ZD

Zloy-Dobriy Dead☠️ in nginx_ru
ну это же китаеболь и сетевики виноваты
источник

DI

Dmitry Ishutkin in nginx_ru
хрен объяснишь. да и какие сетевики. небольшой офис, fortigate, присланный из штатов сразу настроенным. эникейщик, который в него просто воткнул кабель от провайдера
источник

ZD

Zloy-Dobriy Dead☠️ in nginx_ru
и на проксях этих китайских кеша нет. при этом они периодически пиздят у друг друга сессию?
источник

ZD

Zloy-Dobriy Dead☠️ in nginx_ru
а на конечном ngx кеши есть?
источник

DI

Dmitry Ishutkin in nginx_ru
на китайских кэш отключил
источник

DI

Dmitry Ishutkin in nginx_ru
на originate ngx в штатах никакого кэша нет
источник

DI

Dmitry Ishutkin in nginx_ru
теоретически бы запустить их мимо проксей поработать - но дюже медленно, они с ума сойдут и изматерятся
источник

DI

Dmitry Ishutkin in nginx_ru
не представляю, как отловить. кто где подменяет.
источник

DI

Dmitry Ishutkin in nginx_ru
явно не оригинальный nginx и бэкенд - иначе бы в нью-йоркском офисе путалось, а там несколько сотен человек, вылезало бы постоянно
источник

ZD

Zloy-Dobriy Dead☠️ in nginx_ru
а эта хреновина американская
источник