Linux

Настройка SSL на Nginx: руководство по установке сертификата

В этом руководстве вы узнаете, как настроить HTTPS на веб-сервере Nginx с использованием SSL/TLS сертификата. Выполнив описанные шаги, вы защитите трафик и получите значок замка в браузере.

Обновлено 18 июля 2026 г.
15-20 мин
Средняя
FixPedia Team
Применимо к:Nginx 1.20+Ubuntu 22.04Debian 11

Введение

Настройка HTTPS необходима для защиты данных между сервером и клиентами. SSL/TLS шифрует трафик, что повышает доверие пользователей и улучшает SEO. В этом руководстве мы настроим SSL на Nginx с использованием самоподписанного сертификата (или реального, если он у вас есть). После выполнения шагов у вас будет значок замка в браузере и весь трафик будет перенаправляться на защищённый порт 443.

Требования

  • Сервер на Ubuntu 22.04 или Debian 11 (либо любая дистрибутива, где установлен Nginx).
  • Nginx версии 1.20 или выше.
  • Права root для изменения конфигурационных файлов.
  • Установленный инструмент OpenSSL (openssl version).
  • Базовое знание работы с консолью.

Пошаговая инструкция

Шаг 1: Установите Nginx и проверьте версию

Убедитесь, что Nginx уже установлен. Если нет, выполните:

apt update && apt install -y nginx

Проверьте версию и статус сервиса:

nginx -v
systemctl status nginx

Шаг 2: Создайте приватный ключ и CSR

Создайте каталог для SSL-файлов (если он ещё не существует) и сгенерируйте приватный ключ:

mkdir -p /etc/nginx/ssl
openssl genpkey -algorithm RSA -out /etc/nginx/ssl/private.key -pkeyopt rsa_keygen_bits:2048

Создайте файл запроса на сертификат (CSR):

openssl req -new -key /etc/nginx/ssl/private.key -out /etc/nginx/ssl/csr.pem

При выполнении команды вам будет предложено ввести информацию о сертификате. Для самоподписанного сертификата вы можете оставить поля пустыми, кроме Common Name (FQDN вашего сайта).

Шаг 3: Создайте самоподписанный сертификат (или загрузите реальный)

Создайте самоподписанный сертификат сроком на 1 год:

openssl x509 -req -days 365 -in /etc/nginx/ssl/csr.pem -signkey /etc/nginx/ssl/private.key -out /etc/nginx/ssl/certificate.pem

Если у вас уже есть реальный сертификат, скопируйте certificate.pem и ca_bundle.pem (или fullchain.pem) в папку /etc/nginx/ssl/ с теми же именами.

Шаг 4: Настройте сервер Nginx для использования SSL

Откройте конфигурационный файл сайта. Чаще всего это /etc/nginx/sites-available/default. Добавьте/измените блок listen и укажите пути к сертификату и ключу:

server {
    listen 443 ssl;
    server_name your-domain.com;

    ssl_certificate /etc/nginx/ssl/certificate.pem;
    ssl_certificate_key /etc/nginx/ssl/private.key;

    # Дополнительные настройки SSL (рекомендуемые)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    # Основная конфигурация сайта
    root /var/www/html;
    index index.html index.htm;
    location / {
        try_files $uri $uri/ =404;
    }
}

Добавьте блок для перенаправления HTTP на HTTPS (можно оставить в том же файле):

server {
    listen 80;
    server_name your-domain.com;
    return 301 https://$host$request_uri;
}

Сохраните изменения в файле.

Шаг 5: Включите перенаправление с HTTP на HTTPS и перезапустите Nginx

Проверьте корректность конфигурации:

nginx -t

Если ошибок нет, перезапустите Nginx:

systemctl reload nginx

Проверка результата

  1. Откройте браузер и перейдите по адресу https://your-domain.com.
  2. Убедитесь, что отображается значок замка (часто слева от адреса).
  3. Выполните команду для проверки SSL:
curl -I https://your-domain.com

Ожидаемые заголовки:

HTTP/2 200
content-type: text/html
strict-transport-security: max-age=31536000

Если перенаправление работает, запрос к http://your-domain.com будет автоматически перенаправлен на HTTPS.

Возможные проблемы

  • nginx: [emerg] getrlimit(RLIMIT_OPENFILES): no such file or directory – отсутствует директория /etc/nginx/ssl. Убедитесь, что она существует перед генерацией ключа.
  • SSL certificate problem: self signed certificate – браузер не доверяет самоподписанному сертификату. Используйте его только для тестирования; для продакшена приобретите сертификат от доверенного CA.
  • 404 Not Found после перенаправления – проверьте, что root и index соответствуют реальному расположению файлов сайта.
  • nginx: configuration file /etc/nginx/nginx.conf syntax is ok но service nginx reload всё равно не работает – возможно, есть опечатка в конфигурации сервера. Проверьте синтаксис через nginx -t и сравните с образцом.

Если после этих действий SSL всё ещё не работает, проверьте логи Nginx (journalctl -u nginx -f) на предмет ошибок.

Часто задаваемые вопросы

Как проверить, что SSL действительно работает после настройки?
Что делать, если Nginx не перезагружается после изменения конфигурации?
Можно ли использовать самоподписанный сертификат для продакшена?

Полезное

Установите Nginx и проверьте версию
Создайте приватный ключ и CSR
Создайте самоподписанный сертификат (или загрузите реальный)
Настройте сервер Nginx для использования SSL
Включите перенаправление с HTTP на HTTPS и перезапустите Nginx

Эта статья помогла вам решить проблему?