TDS - система распределения трафка, внутри которой можно настроить условия (схемы), по которым пришедший на сервер http-клиент (юзер) перенаправляется на тот или иной URL.
Как происходит перенаправление
Юзер попадает на TDS-url,
т.е. браузер юзера запрашивает у TDS-сервера какой-то адрес, TDS "думает" и выдает ответ...и тут возможны варианты:
1) сервер в поле "статус ответа" сразу "говорит": 301 Moved Permanently и в заголовке ответа Location указан URL, на который нужно следовать далее. Большинство http-клиентов (браузеров) видя такое, сразу же проследуют по этому новому URL и, таким образом, юзер оказывается на новом адресе. Это самый популярный способ редиректа.
2) сервер отдает html-страничку со статусом 200 OK, т.е. как-будто обычная html-страница, но в ее коде размещен meta-тег, увидя который, браузер также должен будет сделать редирект. Еще, можно передавать js-код, который будет редиректить куда надо. Тут хочется отметить, что этим способом TDS-сервер отдает не прямое указание на редирект, а какой-то код/текст/html, который умеет воздействовать на клиентский браузер.
Таким образом, на сервер с TDS приходит юзер, которому
сервер отдает ответ либо сразу с редиректом, либо с небольшим кодом, который подействует на браузер и тот также выполнит редирект. Вся суть в "сервер отдает ответ"...или даже так: "
веб-сервер отдает ответ с редиректом".
Для того, чтобы веб-сервер отдавал нужные ответы, его нужно правильно настроить!
Выбираем веб-сервер
Апач - говно, остается nginx
Раз выбрали nginx, то нужно описать его требования и возможности:
- про nginx есть
такая картинка от 2011 года. 60000 запросов (или редиректов) в секунду...в секунду, КАРЛ! Хотя, само число сейчас уже больше, но при организации ТДС можно ориентироваться примерно на этот порядок, либо вообще
забыть о каких-либо проблемах с производительностью (если не думать о логах и статистике) и все это
на VPS за $10-20;
- для использования nginx в качестве TDS он должен быть установлен на сервере и у вас должен быть root-доступ к серверу, т.е. виртуальные-хостинги не подходят - нужен либо дедик, либо vps/vds/cloud;
- для работы nginx-tds нужно написать правила редиректов, либо заинклудить в nginx-конфиг уже написанные, заранее припасенные правила;
- для составления правил nginx использует свой простой и понятный язык (DSL). В нем есть регескпы, if-ы, переменные и другие известные всем языковые конструкции, но многого чего нет и поэтому реализация некоторых вещей выглядит нелепо, но скорость работы при этом очень приятная. Конфиг файл nginx обычно называется nginx.conf и лежит где-то на сервере в папке /etc/nginx/, остальные файлы в него инклудятся;
- к nginx есть куча модулей на все случаи жизни;
- при организации ТДС проблема будет со статистикой, т.к. nginx может только писать логи, а их анализ и красивое представление в виде табличек - это все не к нему. Анализировать их можно каким-то готовым софтом, либо самим написать что-то простенькое, либо неанализировать совсем, т.к. это не всегда нужно;
Часто можно слышать: "У меня нет такого объема трафа, мне nginx не нужен"
Отвечаю: траф - это не только те уники, которые редиректятся и приносят прибыль с партнерок. Траф - это еще и боты, доля которых может занимать 99% трафика на сервере. Если вы делите траф на ботов и не ботов, чтобы редиректить только юзеров, то nginx может помочь определить где бот, а где не бот. По это теме был топик
тут.
Как пользоваться
Сам редирект обычно выполняется директивой
return
выглядит как-то так:
PHP код:
server {
# ......
# тут будут какие-то настройки вирт.сервера, а сам редирект вот
# редирект на первую схему http://tds.com/schema1
location /shema1 {
return 301 http://partnerka.com/aff.php?aff_id=16357;
}
# редирект на вторую схему http://tds.com/schema2
location /shema2 {
return 301 http://partner12.com/aff.php?aff_id=6666;
}
# или например firefox на один url, а chrome на другой
location /goffchrome {
if ($http_user_agent ~* chrome) {
return 301 http://prtnerka11111.com/aff.php?aff_id=6666;
}
if ($http_user_agent ~* firefox) {
return 301 http://prtnerka22222.com/aff.php?aff_id=6666;
}
}
# если мы хотим сделать редирект с помощью js или meta
# то создаем файл redirect.html , в котором сохраняем соответсвующий код редиректа
# а с помощью nginx просто отдаем этот файл...например, только для RU
location /goru {
if ($geoip_country_code = RU) {
try_files /redirect.html =404;
}
}
}
Предлагаю в этом топике спрашивать или делиться своими решениями по настройке nginx в качестве системы управления трафиком.
Всем nginx