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