Как запустить веб-архив или зеркало сайта на VPS с Nginx и wget

ГлавнаяКак запустить веб-архив или зеркало сайта на VPS с Nginx и wget

Содержание

Запускаем веб-архив или зеркало сайта на VPS с Nginx и wget: личный опыт

Когда у меня возникла необходимость создать локальное зеркало сайта — скажем, на случай отключения оригинального ресурса или просто для оффлайн-доступа — я решила развернуть его на своём VPS. Благо, у меня уже была Ubuntu и немного опыта с Nginx. Делюсь инструкцией, как всё настроить без лишнего стресса.

1. Подготовка VPS и установка Nginx

Если у вас ещё нет настроенного сервера, начнём с базового:

sudo apt update && sudo apt upgrade -y
sudo apt install nginx -y

Nginx — лёгкий и быстрый веб-сервер. После установки его можно сразу запустить:

sudo systemctl start nginx
sudo systemctl enable nginx

Проверить, работает ли сервер, просто: откройте в браузере IP-адрес вашего VPS. Если видите стандартную страницу приветствия Nginx — значит, всё ок.

2. Скачиваем содержимое сайта с помощью wget

Теперь используем wget для создания локального зеркала. Вот команда, которая работает почти везде:

wget --mirror --convert-links --adjust-extension --page-requisites --no-parent https://example.com

Разберу ключи:

  • --mirror — делает полный зеркальный слепок;
  • --convert-links — переписывает ссылки так, чтобы они работали локально;
  • --adjust-extension — добавляет нужные расширения к файлам;
  • --page-requisites — подтягивает все стили, скрипты, картинки;
  • --no-parent — не лезет выше по иерархии сайта.

После загрузки структура сайта будет сохранена в папке example.com/.

3. Настройка Nginx для публикации зеркала

Теперь подключим скачанный архив к веб-серверу. Самый простой путь — указать Nginx корневую директорию сайта.

Открываем конфиг:

sudo nano /etc/nginx/sites-available/default

И меняем (или добавляем):

server {
    listen 80;
    server_name _;

    root /home/youruser/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Перезапускаем Nginx:

sudo systemctl reload nginx

Теперь при переходе на IP-адрес VPS вы будете видеть локальную копию нужного сайта.

4. Дополнительно: авторизация или защита архива

Если вы не хотите, чтобы зеркало было доступно всем подряд, добавьте базовую авторизацию.

Устанавливаем нужный инструмент:

sudo apt install apache2-utils

Создаём файл паролей:

sudo htpasswd -c /etc/nginx/.htpasswd myuser

В конфиге Nginx:

location / {
    auth_basic "Restricted Content";
    auth_basic_user_file /etc/nginx/.htpasswd;
    try_files $uri $uri/ =404;
}

Перезапускаем:

sudo systemctl reload nginx

The end

С помощью обычного wget и минимальной настройки Nginx можно буквально за 15 минут поднять локальную копию любого сайта на своём VPS. Такой подход полезен и для разработки, и для внутреннего использования в команде, и для обхода нестабильности оригинальных источников.

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