Рубрики
Uncategorized

Как настроить безопасные поддомены с помощью NGINX и CERTBOT на VPS

Знаете ли вы, что вы можете разместить столько поддоменов, сколько вы хотите, благодаря Nginx на VPS? Хорошо, если вы … Помечено devops, nginx, сервер, certbot.

Знаете ли вы, что вы можете разместить столько поддоменов, сколько вы хотите, благодаря Nginx на VPS?

Ну, если вы не знаете, как это сделать, чтение этого руководства поможет вам настроить поддомены, предполагая, что у вас уже есть настройка домена.

Вот общее предположение для этой настройки:

  • Ubuntu Server.
  • Полностью зарегистрированное доменное имя: example.com (используйте свое настоящее имя домена)
  • Имена поддоменов: Dashboard.example.com, Shop.example.com

Перед началом этого учебника сначала вы должны сделать все ваши поддомены на публичный IP-адрес вашего сервера через ваш поставщик DNS (редактировать A, CNAME).

Я использую Digitalocean из-за того, насколько легко начать. Если вы можете зарегистрироваться на Digitalocean с моим Реферальная ссылка Вы получаете 100 долларов в кредит, которые можно потратить за 60 дней.

Достаточно хорошо с разговором, давайте прыгнем прямо к нему:

1 — SSH в ваш VPS

$ ssh user@hostname

2 — Установите и запустите nginx

Используйте следующую команду для установки NGINX на VPS

$ sudo apt install nginx

# start nginx service

$ sudo systemctl start nginx

3 — Настройка тестовых каталогов для каждого поддомена

До сих пор все поддомены настроили правильно, но есть одна огромная проблема, все указывают на ту же страницу. Нам нужно отделить эти субдомены, чтобы указать на свои собственные страницы. Для этого я собираюсь настроить тестовые каталоги и HTML-страницы.

Создание каталогов для каждого поддомена

$ cd /var/www

$ sudo mkdir shop.example.com dashboard.example.com

Создание простых HTML-страниц для каждого





    
        
        
        Example.com
    

    
        

It works

Скопируйте и вставьте код выше в каждом из HTML файлы

$ sudo nano shop.example.com/index.html
$ sudo nano dashboard.example.com/index.html

4 — Создание блоков сервера для каждого поддомена

cd /etc/nginx/sites-available

Внутри/etc/nginx/сайты — доступны. Мы собираемся создать блок сервера для каждого поддоменов и делать модификации для каждого. Мы также собираемся создать символическую ссылку каждого файла

$ sudo nano dashboard.example.com

  • Скопируйте и вставьте конфигурации, приведенные ниже
## For dashboard.example.com subdomain
server {
        listen 80;
        listen [::]:80;
        root /var/www/dashboard.example.com;
        index index.html;
        server_name dashboard.example.com www.dashboard.example.com;
}

Сделать символическую ссылку


$ sudo ln -s /etc/nginx/sites-available/dashboard.example.com /etc/nginx/sites-enabled/dashboard.example.com

# do the same for the other subdomain

5 — Тестирование

$ sudo nginx -t
$ sudo systemctl restart nginx

Если вы отправитесь к каждому из поддоменов в своем браузере, вы увидите, что он работает, но вы замечаете, что браузер кричит у вас, что нет сертификата SSL

Держись, мы собираемся исправить это, плюс есть бонус .. Так что держитесь на чтении

6 — Установите CERTBOT и генерировать сертификат SSL

$ sudo apt install -y certbot

# stop nginx service, this is a must
$ sudo systemctl stop nginx

# generate an ssl certificate
$ sudo certbot certonly -d shop.example.com -d dashboard.example.com

Нажмите ввод И вы собираетесь увидеть это меню вариантов

How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Nginx Web Server plugin (nginx)
2: Spin up a temporary webserver (standalone)
3: Place files in webroot directory (webroot)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-3] then [enter] (press 'c' to cancel): 2

Выберите второй вариант и нажмите Enter, вот и все. Мы должны сделать еще одну последнюю вещь, и мы закончили. Нам нужно сказать Nginx, как обрабатывать небезопасные соединения.

7 — перенаправить все HTTP-трафик к HTTPS

$ cd /etc/nginx/sites-available
$ sudo nano dashboard.example.com

Обновите блок сервера с этими конфигурациями

# dashboard.example.com subdomain server block
server {
    listen 80;
    listen [::]:80;
    server_name dashboard.example.com www.dashboard.example.com;
    error_page 497 https://dashboard.example.com$request_uri;
    return 301 https://dashboard.example.com$request_uri;
}

server {
    listen 443 ssl;
    root /var/www/dashboard.example.com;
    index index.html index.htm;
    server_name www.dashboard.example.com;

    # ssl configuration;
    ssl_certificate /etc/letsencrypt/live/dashboard.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/dashboard.example.com/privkey.pem;

    return 301 https:/dashboard.example.com$request_uri;
}
server {
    listen 443 ssl;
    root /var/www/dashboard.example.com;
    index index.html index.htm;

    # ssl configuration;
    ssl_certificate /etc/letsencrypt/live/dashboard.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/dashboard.example.com/privkey.pem;
}

# do the same for the other subdomain file and make sure you replace subdomain name

Вы замечаете, что в блоке сервера мы говорим Nginx, где искать наш сгенерированный ключ SSL сертификата, и я также добавил конфигурации перенаправления WWW как бонус 😉!

Убедитесь, что добавьте запись с www.dashboard.example.com и www.shop.example.com. указывая на публичный IP-адрес вашего сервера.

8 — Опять тестируйте и перезапустите сервис Nginx

$ sudo nginx -t
$ sudo systemctl restart nginx

И там у вас есть. Наш NGINX Server перенаправляет все трафик WWW для не www через SSL. Конфигурация также говорит Nginx для перенаправления всего HTTP-трафика к HTTPS, чтобы убедиться, что мы в безопасности.

Спасибо за чтение!

Ваши комментарии приветствуются

Оригинал: «https://dev.to/knowbee/how-to-setup-secure-subdomains-using-nginx-and-certbot-on-a-vps-4m8h»