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


Тут самое главное иметь под рукой несколько образцовых конфигов, которые мы потом создадим в папке /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
}
На этом все.
