как разделить мой трафик в процентах?

#proxy #webserver

Вопрос:

Мне нужно разделить трафик, поступающий на мой сайт, на 60-40 или, скажем, на 70-30 процентов, например, 70 процентов должны перейти на код 1 и 30 на код 2 и наоборот. Как я могу это сделать? Пожалуйста, помогите мне с кодом.

Комментарии:

1. Находятся ли code1 и code2 на одном сервере?

2. Используйте взвешенную балансировку нагрузки

3. да, это на той же странице, даже как на индексной странице только

Ответ №1:

В вашей точке входа сделайте генератор случайных чисел:

 // index.php

$rnd = rand(0, 100);

if ($rnd < 70) {
    $app->code1();
} else {
    $app->code2();
}

 

Комментарии:

1. Так не пойдет. Это случайность.

2. @Daan Да, это случайно, но в конечном итоге это приведет к предпочтительному проценту.

3. @Daan, почему это не может быть случайным?

4. Необязательно. Если откроются 100 пользователей index.php. Все еще есть вероятность, что трафик будет распределен, например, 60/40.

5. @Daan У вас есть какой-нибудь алгоритм (для реализации и выполнения) для вычисления процента неизвестного общего значения?

Ответ №2:

Я использую NGINX в качестве прокси для своего трафика, а затем использую NGINX в качестве веб-сервера на каждом узле, который у меня есть за этим прокси.

Его требуется минимум. 3 сервера (1 прокси, 2 веб-сервера), а затем вам нужно работать с pass_proxy NGINX и upstream

Когда вы работаете с upstream NGINX, вы можете определить вес, например, 0,5 (50%) или 0,7 (70%).

вот информация об этом https://docs.nginx.com/nginx/admin-guide/security-controls/securing-http-traffic-upstream/

PS: Я изменил ваши теги с php на proxy webserver .

Комментарии:

1. извините, но мне нужно добавить это только на мою страницу индекса, и я не могу изменить его в nginx. мне нужно разделить трафик на два разных кода, а не на две разные ссылки

2. Это не имеет смысла делать на ваших языках, предпочитая ваш http-сервер. ваш код выполняется, когда http-сервер попадает в него, http-сервер может разделить трафик до того, как он выполнит ваш код на стороне сервера.