LET'S ENCRYPT. НАСТРОЙКА SSL НА СЕРВЕРЕ NGINX

 

nginx

 

 

https

Тут самое главное иметь под рукой несколько образцовых конфигов, которые мы потом создадим в папке /etc/nginx/sites-enabled

cd /etc/nginx/sites-enabled

sudo nano mysite.conf Вот этот конфиг для обратного прокси, т. е., тут реализовано перенаправление на другой сервер.

server {
# Настраиваем слушание порта 80 для HTTP
    listen 80;
    listen [::]:80;
    # Указываем серверное имя для перенаправления
    server_name mysite.ard-s.ru www.mysite.ard-s.ru;

    # Перенаправляем все запросы на внутренний IP-адрес
    location / {
        proxy_pass http://192.168.88.53;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

}

А тут настройка для локального сервера:

server {
    # Настраиваем слушание порта 80 для HTTP
    listen 80;
    listen [::]:80;
    # Указываем серверное имя
    server_name mysite.ard-s.ru www.mysite.ard-s.ru;
    # Обрабатываем запросы к корню и передаем их в /var/www/html
    location / {
        root /var/www/html;  # Указываем корневой каталог для статических файлов
        index index.html index.htm;  # Указываем файлы индекса
        # Если файл не найден, возвращаем 404
        try_files $uri $uri/ =404;
    }
}

Вот, после создания конфига на основе одного из этих вариантов, мы сначала установим cerbot

sudo apt install certbot python3-certbot-nginx

Затем установим сами сертификаты:

sudo certbot --nginx -d mysite.ru -d www.mysite.ru

Количество сайтов не ограничено, можно добавлять сколько угодно чрез -d. Cerbot автоматически перелопатит конфиги, добавив туда какие-то свои записи. После установки сертификатов желательно перезагрузить nginx.

sudo systemctl restart nginx

Если в вашей сети работает какой-то локальный DNS-сервер, то лучше отключить его на период, пока сертификаты обнавляются. Иначе лыжи не поедут.

Далее примеры конфигов.

iRedMail прокси с 192.168.88.45 на 192.168.88.242:

server {
    listen 80;
    server_name mail.ard-s.ru;

    # Перенаправление на HTTPS (опционально, но рекомендуется)
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name mail.ard-s.ru;

    # SSL-сертификаты (например, от Let's Encrypt)
    ssl_certificate /etc/letsencrypt/live/mail.ard-s.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mail.ard-s.ru/privkey.pem;

    # Безопасные настройки SSL (можно взять из Mozilla SSL Config Generator)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
    ssl_prefer_server_ciphers off;

    location / {
        proxy_pass https://192.168.88.242;  # или http://192.168.88.242, если iRedMail слушает HTTP
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # Важно для корректной работы веб-интерфейсов
        proxy_ssl_verify off;  # только если на 242 используется самоподписанный сертификат
        proxy_redirect off;
    }
}

А тут у нас прокси видеорегистратора на 192.168.88.23

server {
     server_name secure.ard-s.ru www.secure.ard-s.ru;
     location / {
         proxy_pass http://192.168.88.23;  # ← убедись, что порт верный!
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header X-Forwarded-Proto $scheme;
    }
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/secure.ard-s.ru/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/secure.ard-s.ru/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
    if ($host = www.secure.ard-s.ru) {
        return 301 https://$host$request_uri;
    } # managed by Certbot
    if ($host = secure.ard-s.ru) {
        return 301 https://$host$request_uri;
    } # managed by Certbot
    server_name secure.ard-s.ru www.secure.ard-s.ru;
    listen 80;
    return 404; # managed by Certbot
}

А это прокси Микротика. Для микрота необходимо активировать IP->Services -> www и и там назначить соответствующий порт.

server {
     server_name mikrotik.ard-s.ru www.mikrotik.ard-s.ru;
     location / {
         proxy_pass http://192.168.88.1:1982;  # ← убедись, что порт верный! 
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header X-Forwarded-Proto $scheme;
    }
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mikrotik.ard-s.ru/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mikrotik.ard-s.ru/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
    if ($host = www.mikrotik.ard-s.ru) {
        return 301 https://$host$request_uri;
    } # managed by Certbot
    if ($host = mikrotik.ard-s.ru) {
        return 301 https://$host$request_uri;
    } # managed by Certbot
    server_name mikrotik.ard-s.ru www.mikrotik.ard-s.ru;
    listen 80;
    return 404; # managed by Certbot
}

На этом все.