Исходные данные:
У нас есть уже настроенный сервер с поднятым nginx в качестве reverse proxy c внешним ip.
На нем также находятся несколько web-серверов. Возникла необходимость установить виртуальную машину с еще одним web-сервером new.admin812.ru во внутренней сети c ip-адресом 192.168.15.13 и обеспечить доступ снаружи по https.
Поднимаем виртуальную машину, устанавливаем nginx или apache, php и что там еще нам нужно для работы. убеждаемся, что внутри сети все работает. Подробнее смотри здесь. Заходим в панель хостинга провайдера и присваиваем сайту new.admin812.ru такой же ip-адрес как и у nginx-proxy.
Следующая задача – настроить доступ извне. Переходим на nginx-proxy и пропишем наш новый сайт.
Несмотря на то, что сайт будет находится на другом сервере, создадим каталог с именем нашего нового сайта.
Это необходимо для генерации сертификатов в Let’s encrypt.
sudo mkdir /var/www/html/new.admin812.ru sudo touch /etc/nginx/sites-available/new.admin812.ru sudo ln -s /etc/nginx/sites-available/new.admin812.ru /etc/nginx/sites-enabled/new.admin812.ru
Теперь необходимо получить сертификат. Делать это мы будем с помощью Cerbot
Скачиваем и делаем файл исполняемым
git clone https://github.com/certbot/certbot cd certbot chmod a+x ./certbot-auto
Теперь необходимо получить сам сертификат.
./certbot-auto certonly --webroot --agree-tos --email info@new.admin812.ru -w /home/www/html/new.admin812.ru/ -d new.admin812.ru -d www.new.admin812.ru
Запускаем и ждем. По окончании, если все хорошо, вы видите сообщение:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/info@new.admin812.ru/fullchain.pem. Your cert will expire on 2018-12-25. To obtain a new version of the certificate in the future, simply run Certbot again. - If you lose your account credentials, you can recover through e-mails sent to info@new.admin812.ru. - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Сертификаты установлены, теперь в настройках nginx пропишем пути к ним.
sudo nano /etc/nginx/sites-available/new.admin812.ru
server { listen 80; listen [::]:80; server_name new.admin812.ru; return 301 https://$server_name$request_uri; } server { listen 443 ssl; listen [::]:443 ssl; server_name new.admin812.ru; ssl on; ssl_certificate /etc/letsencrypt/live/new.admin812.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/new.admin812.ru/privkey.pem; include /etc/nginx/snippets/ssl.conf; location /.well-known { root /var/www/http/new.admin812.ru/; } location / { proxy_pass http://192.168.15.13:80/; } }
Проверяем:
nginx -t
и если нет ошибок, перегружаем
service nginx restart