Настройка массового размещения сайтов на одном IP с изоляцией
Дата публикации: 11.06.2026

Настройка массового размещения сайтов на одном IP с изоляцией

Хочу себе такие же кнопки

Что вы получите после этого урока

  • Понимание, почему массовое размещение сайтов на одном IP без изоляции — это «коктейль» из риска и потери SEO‑силы.
  • Пошаговый план создания «песочницы» в каждом домене: отдельный виртуальный хост, отдельный пользователь ОС, отдельный набор портов и логов.
  • Набор инструментов (Docker, LXC, cPanel/WHM, Cloudflare) и практические рекомендации по их настройке.

1. Почему изоляция критична для PBN

Проблема Что происходит без изоляции Как изоляция решает
IP‑репутация Один «плохой» сайт (например, с спам‑ссылками) «заражает» все остальные, и поисковики могут полностью заблокировать IP. Каждый сайт имеет собственный контейнер → отдельный набор сетевых параметров → поисковики видят их как независимые ресурсы.
Кросс‑контаминация Файлы, базы данных, логи могут случайно перепутаться, что приводит к дублированию контента и падению индексации. Изолированные пользовательские аккаунты и отдельные директории исключают «перепутывание».
Управление При обновлении PHP‑версии или SSL‑сертификата меняются сразу на всех сайтах — риск «сломать» сразу несколько ресурсов. Контейнерные образы позволяют менять стек только в нужном контейнере.

2. Общая архитектура «массового размещения»

[Физический сервер] 
   ├─ [Docker‑Engine] 
   │   ├─ container‑site‑001 (IP‑0.0.0.1, пользователь bn001) 
   │   ├─ container‑site‑002 (IP‑0.0.0.1, пользователь bn002) 
   │   └─ … 
   └─ [BGP‑IP‑пул] → один публичный IP, но каждый контейнер «маскируется» через уникальный **source‑port** и **SNI**.
  • Один публичный IP (экономия, не привлекает внимание).
  • Docker‑контейнеры — каждый сайт живёт в отдельном пространстве.
  • SNI (Server Name Indication) — по TLS‑расширению сервер знает, какой сертификат отдать, даже если IP одинаковый.

3. Подготовка сервера

3.1 Выбор ОС и базовых пакетов

OS Почему подходит
Ubuntu 22.04 LTS Широкая поддержка Docker, LXC, простая работа с ufw.
CentOS 9 Stream Хорошо интегрируется с cPanel/WHM, если планируется использовать их.

Установим Docker (пример для Ubuntu):

sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io

3.2 Настройка сети

  • Создаём виртуальный bridge‑интерфейс br0, к которому будут привязаны все контейнеры.
  • Открываем только нужные порты (80, 443, 22 для SSH‑доступа к хосту).
sudo ip link add name br0 type bridge
sudo ip addr add 10.10.0.1/24 dev br0
sudo ip link set dev br0 up
  • iptables‑правило, ограничивающее исходящие соединения из контейнеров только к DNS‑серверам и к целевым сайтам‑партнёрам.
sudo iptables -A FORWARD -i br0 -o eth0 -p tcp --dport 80 -j ACCEPT
sudo iptables -A FORWARD -i br0 -o eth0 -p tcp --dport 443 -j ACCEPT
sudo iptables -A FORWARD -i br0 -o eth0 -j DROP

4. Создание изолированного окружения для сайта

4.1 Docker‑образ с готовой LAMP‑стек

FROM php:8.2-apache
RUN apt-get update && apt-get install -y libpng-dev libjpeg-dev libfreetype6-dev && \
    docker-php-ext-configure gd --with-freetype --with-jpeg && \
    docker-php-ext-install -pdo pdo_mysql mysqli gd
COPY ./site /var/www/html
EXPOSE 80 443
  • site — директория с вашими HTML/JS/PHP‑файлами.
  • EXPOSE — открываем порты внутри контейнера.

4.2 Запуск контейнера с уникальными параметрами

docker run -d \
  --name bn001 \
  --network bridge \
  -p 8081:80 -p 8443:443 \
  -e VIRTUAL_HOST=example1.com \
  -e LETSENCRYPT_HOST=example1.com \
  -e LETSENCRYPT_EMAIL=you@example.com \
  -v /home/bn001/www:/var/www/html \
  my-lamp-image
  • -p 8081:80 — внешний порт 8081 будет «прокси‑привязан» к внутреннему 80.
  • VIRTUAL_HOST — используется в обратном прокси‑Nginx (см. ниже) для SNI.

4.3 Обратный прокси‑Nginx (один процесс, несколько виртуальных хостов)

http {
    upstream site1 { server 127.0.0.1:8081; }
    upstream site2 { server 127.0.0.1:8082; }

    server {
        listen 80;
        server_name example1.com;
        location / { proxy_pass http://site1; }
    }

    server {
        listen 80;
        server_name example2.com;
        location / { proxy_pass http://site2; }
    }
}
  • SNI автоматически выбирает нужный сертификат, потому что каждый server_name имеет свой ssl_certificate.

5. Управление пользователями и правами

Действие Как выполнить
Создать отдельного системного пользователя sudo adduser --disabled-password --gecos "" bn001
Назначить домашнюю директорию sudo mkdir -p /home/bn001/www && sudo chown bn001:bn001 /home/bn001/www
Ограничить доступ к SSH В /etc/ssh/sshd_config добавить AllowUsers bn001 (повторить для каждого).
Запретить sudo Убедитесь, что пользователь не входит в группу sudo.

Эти шаги гарантируют, что даже если злоумышленник получит доступ к одному сайту, он не сможет «взломать» остальные.


6. Автоматизация развертывания

6.1 Скрипт‑генератор Docker‑Compose

version: "3.8"
services:
  site001:
    image: my-lamp-image
    container_name: bn001
    ports:
      - "8081:80"
      - "8443:443"
    environment:
      VIRTUAL_HOST: example1.com
      LETSENCRYPT_HOST: example1.com
    volumes:
      - /home/bn001/www:/var/www/html
    restart: unless-stopped
  • docker-compose up -d — разворачивает всё за один клик.
  • Для новых сайтов достаточно скопировать блок site001, изменить номера портов и переменные окружения.

6.2 Планировщик задач (cron) для обновления SSL

0 3 * * * docker exec bn001 certbot renew --quiet && docker restart bn001

7. Мониторинг и логирование

Инструмент Что мониторит Как подключить
Prometheus + Grafana Загрузка CPU, RAM, сетевой трафик контейнеров В Docker‑Compose добавить prometheus-node-exporter.
Fail2Ban Неудачные попытки входа по SSH sudo apt install fail2ban и добавить jail для пользователя bn001.
Logrotate Размеры логов Apache/Nginx В /etc/logrotate.d/ создать файл с правилами для /var/log/apache2/*.log.

8. Лучшие практики «массового» размещения

  1. Не используйте один и тот же шаблон темы более чем в 5‑7 сайтах – иначе поисковики увидят «повторный контент».
  2. Разнообразьте DNS‑записи: часть доменов с A‑record, часть с CNAME, часть с AAAA.
  3. Периодически меняйте порт‑привязку (например, 8081 → 8091) – это усложняет автоматическое сканирование.
  4. Размещайте «мусорные» файлы (robots.txt, .htaccess) в разных комбинациях – имитирует реальный сайт.
  5. Следите за репутацией IP через сервисы типа ipinfo.io или spamhaus.org; при падении репутации переключайте часть сайтов на резервный IP‑пул.

Практика для закрепления

  1. Создайте Docker‑контейнер с LAMP‑стеком, привяжите его к порту 8085 и настройте обратный прокси‑Nginx, чтобы домен mytestsite.com обслуживался через SNI.
  2. Сгенерируйте отдельного системного пользователя bn999, создайте домашнюю папку /home/bn999/www, задайте права 750. Проверьте, что пользователь не может выполнить sudo.
  3. Напишите правила iptables, позволяющие только исходящие соединения на порт 443 к IP‑адресу 93.184.216.34 (пример – example.com).
  4. С помощью docker-compose разверните два сайта (siteA и siteB) на одном сервере, используя один образ, но разные пользовательские директории и порты. Снимите скриншот docker ps и объясните, почему каждый контейнер имеет собственный NetworkSettings.
  5. Настройте Fail2Ban для защиты SSH‑доступа пользователя bn001. Приведите пример правила jail.local, которое блокирует IP после 3 неудачных попыток входа в течение 10 минут.

Выполнив эти задания, вы получите полное представление о том, как безопасно и эффективно размещать сотни сайтов на одном IP, сохраняя их независимость и минимизируя риск «потери» репутации. Удачной практики!


БЕСПЛАТНЫЙ КУРС: «ЦИФРОВОЙ СЕЙФ: БЫСТРОЙ БЭКАП»
Чат онлайн с возможностью отправки гифок
ИП или ООО: какая форма выгоднее для стартапа в Москве
Как использовать SAPE для защиты данных
Китайский производитель трубной арматуры
Микросервисы: как рисовать стрелки с подписями
Онлайн рулетка с поддержкой мобильных устройств
Онлайн встреча Екатеринбург
Оптимизация Битрикс на VDSina: бесплатный материал
Ошибки и их исправление при использовании SAPE
Основы и терминология LA SAPE: что это и как начать
Основы SAPE: что это и как работает
Партнёрская программа без блога: эффективные методы трафика из Telegram
Подготовка к ОГЭ: контрольные материалы
Погружение в английский без субтитров: 5 минут в день — эффективно
Путешествуйте самостоятельно: все, что нужно знать
Россия онлайн видеочат
Рулетка общения
Сбои AutoCAD при старте - быстрая диагностика