Nginx в качестве TDS - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB90.7493
BTC/USD69952.8475
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 28.08.2015, 07:27   #1
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию Nginx в качестве TDS

TDS - система распределения трафка, внутри которой можно настроить условия (схемы), по которым пришедший на сервер http-клиент (юзер) перенаправляется на тот или иной URL.


Как происходит перенаправление
Юзер попадает на TDS-url, More

Таким образом, на сервер с 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

выглядит как-то так:

More

Предлагаю в этом топике спрашивать или делиться своими решениями по настройке nginx в качестве системы управления трафиком.

Всем nginx
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser

Последний раз редактировалось chesser; 28.08.2015 в 07:41.
chesser вне форума  
Старый 28.08.2015, 10:14   #2
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
ТС -->
автор темы ТС По умолчанию

Рассмотрим типовую задачу, которую удобно решать с помощью nginx.

Дано: несколько(или много) серверов, на которых работают сайты или доры или что-то подобное, куда приходит трафик: много трафика и много ботов. Код сайтов можно менять, но не очень хочется делать это часто.

Нужно: организовать анализ трафика и в зависимости от его характеристик делать (или не делать) редиректы. Система должна быть готова к быстрым изменениям условий без перелопачивания всех сайтов.

Решение: решение будет схематичное и абстрактное, но, кому интересно, тот уловит суть. В коде каждого сайта вписываем такой код, который будет исполнятся синхронно для каждого пришедшего на сайт юзера:

More

Конфиг nginx на TDS-сервере:

More

задачу высосал из пальца и писал без проверки синтаксиса, поэтому

UPD: этот код будет исполнятся очень быстро - до 100к запросов в секунду...первое узкое горлышко тут скорее всего будет лог ip ассесоров на диск, хотя и там можно будет настроить большой буффер.
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser

Последний раз редактировалось chesser; 28.08.2015 в 10:26.
chesser вне форума  
Старый 28.08.2015, 10:30   #3
oledj
Senior Member
 
Аватар для oledj
 
Регистрация: 23.07.2008
Адрес: Kiev
Сообщений: 398
Бабло: $81715
Отправить сообщение для oledj с помощью ICQ
По умолчанию

Чето мне подсказывает что люди с подобным количеством трафа давно решили эту проблему. А у других она впринципе не возникнет.
oledj вне форума  
Старый 28.08.2015, 10:53   #4
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от oledj
Чето мне подсказывает что люди
во-первых, оно у тебя ошибается, т.к. не все те люди решили свои задачи, а большинство продолжает мучиться и ныть с платными тдс.

во-вторых, как я и писал выше - не важно, сколько трафа. Когда используешь nginx, просто забудь про проблемы с производительностью и все: много-мало - не важно. Если мало сейчас, завтра будет много и наоборот.

в-третьих, тут компромисс между гибкостью и производительностью, в отличии от платных тдс или реализации редиректов на интерпретируемых серверных ЯПах.

чтобы описанное выше выглядело по-человечески и начало обладать какими-то маркетинговыми свойствами, нужно сделать веб-интерфейс, у которого будет всего 1 или 2 задачи:
1) админ тдс понажимает удобные кнопочки управления, выполненные на каком-нибудь bootstrap + js и нажмет кнопку "применить", после чего сгенерится код по типу того, что я писал руками выше. Код отправится на сервер и сохранится в файл(ы), которые потом подхватятся nginx-ом (через nginx reload по крону)
2) генерация красивых табличек со статистикой

кто такую штуку запилит?
проект был бы интересным, но у меня нет столько времени
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 28.08.2015, 10:59   #5
dady
Senior Medved
 
Аватар для dady
 
Регистрация: 15.06.2008
Сообщений: 4,146
Бабло: $22479945
По умолчанию

А функционал возможен любой? Например если урл содержит слово то его туда, если реферер такой то сюда и тп.
__________________
Аппрув США >91% и Европа >90% Сливай фарму на Pharmcash - получай хрустящий кэш! / Спонсор! Докажи, что твоя партнерка №1 / 2019
dady вне форума  
Старый 28.08.2015, 11:18   #6
oledj
Senior Member
 
Аватар для oledj
 
Регистрация: 23.07.2008
Адрес: Kiev
Сообщений: 398
Бабло: $81715
Отправить сообщение для oledj с помощью ICQ
По умолчанию

Ну так вся проблема будет в бд статистики. То что nginx может редиректнуть 100к запросов в секунду ( опа а это 8млрд в сутки, а таким трафом я так понимаю не обладает даже гугл ) - так вот это прекрасно. Но это всё другой мир, в и этом мире эти проблемы решены.

Написал бы как базу данных спроектировать для 10к запросов в секунду - это есть 9м и более приземленно. И такую чтобы статистика была максимально дробна и любые отчеты отдавались за 0.1 секунду хотя бы

---

упс 10к в секунду это 864 миллиона, 100 в секунду самое то, на 8.6 миллионов.

Последний раз редактировалось oledj; 28.08.2015 в 11:24.
oledj вне форума  
Старый 28.08.2015, 11:19   #7
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от dady
А функционал возможен любой? Например если урл содержит слово то его туда, если реферер такой то сюда и тп.
сразу отвечу - да, но если распишешь на примере, я тебе напишу кусок конфиг под это
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 28.08.2015, 11:24   #8
dady
Senior Medved
 
Аватар для dady
 
Регистрация: 15.06.2008
Сообщений: 4,146
Бабло: $22479945
По умолчанию

Ну например если страна us и и реферер viagra , то http://ap1.com, если реферер другой то http://ap2.com
__________________
Аппрув США >91% и Европа >90% Сливай фарму на Pharmcash - получай хрустящий кэш! / Спонсор! Докажи, что твоя партнерка №1 / 2019
dady вне форума  
Старый 28.08.2015, 11:27   #9
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от dady
Ну например
уник сам приходит на сервер с tds, или через запрос из скрипта сайта?
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 28.08.2015, 11:27   #10
красный шершень
Ебланнед
 
Регистрация: 17.08.2015
Сообщений: 190
Бабло: $25250
По умолчанию

Цитата:
Сообщение от oledj Посмотреть сообщение
Написал бы как базу данных спроектировать для 10к запросов в секунду - это есть 9м и более приземленно. И такую чтобы статистика была максимально дробна и любые отчеты отдавались за 0.1 секунду хотя бы
легко
только тут одной БД не обойдёшься, комплексно надо
красный шершень вне форума