Re: Вопрос о балансировке нагрузки.
Maxim Dounin
mdounin на mdounin.ru
Пт Ноя 30 13:07:18 UTC 2018
Hello!
On Fri, Nov 30, 2018 at 01:07:49PM +0300, CoDDoC via nginx-ru wrote:
> Существует ли в принципе возможность получить в какую-то переменную имя бэкенд-сервера, выбранное в директиве upstream?
>
> Задача такая.
> Есть основной сервер example.com, на котором: nginx <=> php <=> БД
> и несколько бэкендов-хранилок в том же домене, но в разных ДЦ (допустим, s1.example.com, s2.example.com и т.д.)
> Соответственно:
> upstream backends {
> server s1.example.com;
> server s2.example.com;
> server s3.example.com;
> .....
> }
> Пользователь авторизуется на основном сервере, получает сессию и куки.
> Каждому пользователю выдаются куки с одинаковами именами, но разными значениями.
> Кроме того, для каждого пользователя создаются хэши, привязанные к его сессии и кукам.
>
> Требуется отдать с ОСНОВНОГО сервера html, содержащую ссылки вида:
> - для пользователя A - <a href= 's1.example.com/path/<hash 1>/file'> ,
> - для пользователя B - <a href= 's2.example.com/path/<hash 2>/file'> ,
>
> После чего каждый из них тянет нужный файл с выбранной хранилки.
>
> Т.е. не пробрасывать запрос на хранилку через proxy_pass backends, а только получить имя бэкенда, выбранного с учетом правил в upstream. И получив это имя в какую-то переменную, передать его в php, отвечающий за выдачу html страницы из соответствующего локейшена.
>
> Заранее благодарю за любые конструктивные идеи.
http://nginx.org/r/split_clients
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru