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