Как спасти сайт за 7 шагов и 20 минут

в 17:17, , рубрики: devops

Спасаем сайт, находящийся на IP, который попал под ковровую бомбардировку Роскомнадзора.

Пост для не самых опытных пользователей, поэтому может содержать излишнюю конкретику, с точки зрения матерых админов.

Будем поднимать тунель с помощью haproxy.
Haproxy будет работать на уровне TCP. Этот метод хорош тем, что не надо переносить SSL ключи и вообще, возни минимум.

1. Покупаем за границей VPS с Ubuntu 16.04 LTS

Надо убедиться, что его IP не находится в блок-листе: http://blocklist.rkn.gov.ru

2. Ставим haproxy

sudo apt-get install haproxy

3. Настраиваем haproxy

Меняем содержимое файла /etc/haproxy/haproxy.cfg вот на такое:

global
        log /dev/log    local0
        log /dev/log    local1
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

defaults
        mode    tcp
        log     global
        balance leastconn
        timeout client      30000ms
        timeout server      30000ms
        timeout connect      3000ms
        retries 3

frontend in_http_server
        bind 0.0.0.0:80
        default_backend out_http_server
backend out_http_server
        server srv1 АЙПИ_СПАСАЕМОГО_САЙТА:80 maxconn 2048

frontend in_https_server
        bind 0.0.0.0:443
        default_backend out_https_server
backend out_https_server
        server srv1 АЙПИ_СПАСАЕМОГО_САЙТА:443 maxconn 2048

Не забудьте заменить АЙПИ_СПАСАЕМОГО_САЙТА.

4. Перезапускаем haproxy

sudo service haproxy restart

5. Проверяем что прокси работает

На локальной машине заносим в hosts IP созданного VPS и домен сайта. Проверяем браузером, что домен открывается.
После проверки, не забываем удалить.

6. Перекидываем DNS записи на этот VPS

7. Ждем рассасывания DNS

Рассасывание проверяем здесь: https://ping-admin.ru/free_test/

Автор: Бог сервера

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js