Начнем с годноты, пожалуй. Сегодня расскажу, как организовать приличный такой отказоустойчивый и, со всех сторон замечательный, хостинг для своих доменов буквально за 15 минут. Технология очень мощная в прямых руках, но при этом крайне недооцененная. Давайте нести свет в массы!
Давайте для начала рассмотрим классическую схему хоста доменов и наиболее часто встречающиеся проблемы. Допустим, есть условный дедик, на нем IPv4 с пачкой доменов. Классика. И что с ним может случиться.
Решение 1: дозаказываем еще ИП на впс. Но вот беда - далеко не все хостинги дают такую возможность. А другие дают, но ценник, мягко говоря - не очень гуманный. Да рейтинг хостера можно завалить, что акки будут отлетать при одном упоминании с этого хостера. Печально.
Решение 2: переезжаем на другую впс. Да, и сетапим все окружение заново, переносим проклы/ленды. Короче не быстрый и нудный это процесс, а оно нам надо?
Тут основная проблема в том, что мы можем словить бан акка на хостинге, и разом потерять весь траф на другие домены на этом ВПС и все проклы (но вы же делаете бекапы, да?).
Решение 1: если это абуза, то долго и нудно переписываться с хостингом. Повезет - дадут скачать дамп. Нет - гуляй, парниша.
Решение 2: если же это ддос, то форумы и настраивать фаервол (если каналы не легли, и подключение в принципе возможно)
При всем этом не забываем, что бабосик идет мимо, акки банятся. И косвенные потери могут многократно превысить прямые.
Просто представь на секунду, что ты не один работаешь, а командой. Человек эдак на 10 хотя бы, с заливалами, версталами и прочими нужными людьми. Как доставлять свежие проклы на имеющиеся домены, обновлять кривые и в принципе раздать проклы хотя б пятерым заливалам.
Решение 1: ручками, ручками и еще раз ручками. Переслали архив, а дальше сами любитесь. Версионирование? Бекапы? Забудьте!
Решение 2: использовать докер. Частично это закрывает и предыдущую проблему. Но только частично: настройка все равно потребуется, хоть и меньше. Но образ еще надо уметь собрать и доставить. Так что такое себе.
В целом, похоже на ддос - на одном домене с впс выстрелил траф (или боты сошли с ума). А впска у нас не шибко мощная. И вот она легла. Со всеми доменами на ней. Акки забанились.
Решение единственное: покупаем мощные впс/дедики, не вешаем более 5-6 доменов на каждый. А потом посчитали, во сколько нам это обошлось, и перевели весь профит на оплату железа. Ну а в случае с дедиками - еще и заплатили setup fee. Недешево получается.
В общем продолжать можно долго, но все сводится к тому, что классическая схема она хорошая, проверенная, но далеко не всегда оптимальна в финансовом, техническом и организационном плане. И тут мы переходим к собственно сабжу.
Если прям просто и на пальцах, то это механизм, при котором с клиентом (посетителем сайта) общается не наш сервер, а какой-то другой сервер: передает все запросы на основной сервер и возвращает ответы клиенту.
Классическая схема:
Схема с проксированием:
да да, вы могли видеть именно эти пикчи в сети: некоторое время назад я продавал это за деньги, а потом это утекло в паблик
Основная идея у нас такая: есть много-много дохлых парубаксовых впс (далее прокси), на которые привязаны домены. И один (или несколько) мощных и недорогих серверов, которые все запросы и обрабатывают (далее бекенды). Такая связка может вывезти ооооочень много трафика (для арбитражника или небольшой команды).
Для начала, стоит заиметь бекенд. Тут уж вкусовщина. Лично мне подходят только дедики на энтерпрайз ссд (около 50 евро в месяц) с Centos 7 на борту. Грамотная настройка бекенда это отдельная песня, возможно, будет в будущем мануал по этому. Но сейчас представим, что он у нас есть. Ставим туда замечательный веб сервер Nginx, PHP-fpm 7.3 (вполне стабильная версия). И начинаем править конфиги.
/etc/nginx/nginx.conf
в секцию http добавляем следующие строки (в любое место)
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Real-IP;
real_ip_recursive on;
Это позволит восстанавливать оригинальные IP посетителей - далее объясню.
На этом с бекендом закончили, переходим к прокси.
Для прокси хоста нам подойдёт практически любая впска. Я пропускал неплохой траф через клауд впс с 512 мб озу и совсем дохлым шаред процессором. Здесь нам потребуется только NGINX. Заказываем любую бич-впс (можно и триалку - привет вдсина!). Ставим NGINX и правим конфиг. А вообще, удаляем его нафиг, все равно там ничего не потребуется.
rm /etc/nginx/nginx.conf
и создаем новый
nano /etc/nginx/nginx.conf
вставляем туда следующий контент:
worker_processes auto; worker_rlimit_nofile 30000; events { worker_connections 16384; use epoll; multi_accept on; } http { server_names_hash_bucket_size 512; include mime.types; default_type application/octet-stream; charset off; server_tokens off; proxy_max_temp_file_size 0; log_format main '$remote_addr ' '$host [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'; access_log off; error_log /dev/null; sendfile on; tcp_nopush on; tcp_nodelay on; reset_timedout_connection on; # Compression. gzip on; gzip_min_length 10240; gzip_proxied expired no-cache no-store private auth; gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml; gzip_disable "msie6"; upstream mybackend { server <IP бекенда>; } # запрещаем доступ по ип server { access_log off; listen 80; server_name "~^\d*\.\d*\.\d*\.\d*$"; location / { return 403; } } server { listen 80 default; server_name _; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_pass http://mybackend; } } }
<IP бекенда> заменяем на IP нашего бекенда (того самого большого мощного сервера).
Выделенная строка как раз и отвечает за передачу реального ип посетителя на наш бекенд. Перезапускаем все сервисы и на этом все.
А сделали мы следующее. Все запросы с прокси (там, где висят домены) будут перенаправлены на бекенд. Там они обработаются, и ответы вернутся клиенту. Все файлы доменов физически лежат на одном сервере, но для клиентов (посетителей, ботов, модеров и прочих) - сайты будут висеть якобы на наших прокси. Бекенд невидим. Никак. Вся инфраструктура скрыта за прокси. Что творится за ней и кто там и где обрабатывает запрос - никто никогда не узнает, если не захотим.
Допустим, у нас есть 100 доменов, нам нужно захостить их. Берем 20 впс по 10 баксов (ну чтоб хоть как-то ворочалось и не дохло).
Затраты:
Вообще, я бы не держал на одном ип более 5 доменов. Это как минимум палево, а вообще - нехорошо все яйца хранить в одной корзине.
Затраты:
Итого, все это обойдется в 90 долларов. При том, эта связка для 100 доменов среднего арбитражника - мягко говоря, избыточна. Можно сказать, что одного приличного бекенда хватит очень надолго.
Инструмент этот, ИМХО, крайне интересный. Вышеописанное - только малая толика того, что можно сделать. Например, можно держать проклы на одних серваках, а сами сайты - на других, а для клиента это все будет лежать на одном домене. Можно прятать что угодно и запутывать хвосты. Безболезненно переживать нападки конкурентов и прочих нехороших людей. На что хватит фантазии.
Никого не убеждаю, не уговариваю использовать эти инструменты, но в моей практике они пришлись очень даже к месту. Все вышесказанное - мой личный опыт. Сидел неделями под ддосом, хостил тысячи доменов с трафом на сервачке за 30 баксов, работал в крайне абузной сфере. Что делать с этой информацией - дело ваше.