Запускаем веб-архив или зеркало сайта на 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 под рукой. Никогда не знаешь, когда пригодится. 😉