#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-сервер может разделить трафик до того, как он выполнит ваш код на стороне сервера.