Установка на Debian Linux nginx и certbot
Теория
После того как был установлен apache2 и DokuWiki можно было бы на той ВМ установить сертификаты Let's Encrypt и пробросить в роутере на нее порты 80 и 443. Сайт работал бы замечательно. Но в планах у меня еще несколько вещиц. Нужно и почтовый сервер поднять с web-интерфейсом (roundcube, например) и еще что-нибудь придумаю. Поэтому я решил поставить на отдельную ВМ nginx. С нее я буду управлять всеми сертификатами, которые мне понадобятся и буду проксировать запросы на нужную виртуальную машину.
Приступим к установке.
Практика
Создаем виртуальную машину аналогично той, которую мы создавали в этой статье. Задаем имя, поколение и количество оперативной памяти. Первое и последнее можно позже изменить. Поколение изменить уже не получится. Я выбрал соответственно имя «nginx», поколение 1 и размер оперативной памяти 1 гигабайт.
Затем выбираю виртуальный коммутатор для связи с Интернет.
Затем создаю жесткий диск размером 10 гигабайт. Позже это значение можно увеличить, но нельзя уменьшить! Указываю ISO-образ, с которого будет загрузка установщика Linux.
Во время установки все оставляю как в этой статье, изменяю только имя хоста, а домен тоже оставляю пустым. Позже эти значения можно при необходимости изменить.
После завершения установки Debian Linux проверяю обновления системы и обновляю при наличии таковых.
sudo apt update && sudo apt upgrade
Затем устанавливаю nginx
sudo apt install nginx
Проверяю статус службы nginx
sudo systemctl status nginx.service
А в браузере его работоспособность, перейдя по адресу виртуальной машины.
Теперь нужно настроить nginx так, чтобы запрос сайта nikkutuzov.ru прошел через него, а nginx перенаправил этот запрос на виртуальную машину с DokuWiki. Прежде всего нужно в настройках роутера пробросить порты 80 и 443 на эту (nginx) виртуальную машину (ip-адрес у нее 192.168.11.12). Затем нужно создать конфигурационный файл этого сайта.
sudo nano /etc/nginx/sites-available/nikkutuzov.ru
Со следующим содержанием
server {
listen 80;
listen [::]:80;
server_name nikkutuzov.ru www.nikkutuzov.ru;
}
Потом нужно создать ссылку на этот файл
sudo ln -s /etc/nginx/sites-available/nikkutuzov.ru /etc/nginx/sites-enabled/
И перезапустить nginx
sudo systemctl restart nginx.service
Попробуем перейти по http://nikkutuzov.ru
Все отлично получилось. Теперь добавим сертификат Let's Encrypt
Для этого нужно установить certbot
sudo apt install python3-certbot-nginx
После успешной установки запускаем его.
sudo certbot --nginx
Certbot сам определил (взял значения из ранее созданного конфигурационного файла) для каких сайтов нужно запросить сертификат(ы). Нужно лишь ответить на несколько вопросов:
- адрес электронной почты (можно пропустить, оставив поле пустым)
- принимаю или не принимаю условия использования
- желаю ли получать различные сообщения и новости на электронную почту
- для каких сайтов активировать HTTPS - пустое поле означает выбор для всех в списке
В конце мы видим сообщение об успешном получении сертификата.
Проверяем в браузере, что все работает по HTTPS
Сертификаты выдаются не навсегда, а на 3 месяца, точнее на 90 дней. Что же теперь, придется следить за этим и перевыпускать сертификаты вручную? Нет! для этого есть специальная служба. Она ставится вместе с certbot. Проверим, что она у нас запущена и работает.
sudo systemctl status certbot.time
Можно проверить перевыпуск сертификатов «сухим прогоном». Ничего не поломаем, это просто проверка, что сертификаты перевыпустятся автоматически в нужное время.
sudo certbot renew --dry-run
Итак, с сертификатами у нас все отлично. Теперь нужно, чтобы открывался наш сайт, а не просто страничка-заглушка от nginx. Для этого поправим немного наш конфигурационный файл.
sudo nano /etc/nginx/sites-available/nikkutuzov.ru
Нужно в конце секции Server { }, там, где указан порт 443 вставить три строки.
location / {
proxy_pass http://nikkutuzov.ru;
}
вместо nikkutuzov.ru можно указать просто ip-адрес ВМ (192.168.11.13 в моем случае), но я выбрал так по маленькой причине, о которой расскажу, когда буду настраивать регистрацию на этом сайте.
Теперь мне нужно, чтобы по имени nikkutuzov.ru моя виртуальная машина (ТОЛЬКО ОНА!) переходила на 192.168.11.13 Для открою файл hosts
sudo nano /etc/hosts
и добавлю следующую строку.
192.168.11.13 nikkutuzov.ru wiki
Проверяю, что задуманное получилось.
ping nikkutuzov.ru
После внесения изменений в конфигурационный файл nginx службу нужно перезапустить.
sudo systemctl restart nginx.service
Теперь наш сайт имеет сертификат, ему уже больше доверия. Давайте проверим на сколько он соответствует современным стандартам безопасности. Для этого нужно перейти по ссылке и ввести адрес сайта. Результат отличный!



















