⚙️
blog.cat.ssl

Установка SSL в Nginx: ssl_certificate и настройка server-блока

08.07.2035
← Все статьи

Nginx известен своей высокой производительностью и гибкостью, и большинство сайтов с самым высоким трафиком в мире работают именно на нём. Настройка SSL в Nginx использует немного другой синтаксис по сравнению с Apache, но после первого знакомства становится очень удобной. Технические специалисты Sayt.uz работают с Nginx ежедневно и в этой статье делятся проверенными настройками.

Размещение файлов сертификата

Обычно файлы сертификата и приватного ключа размещают в /etc/ssl/certs и /etc/ssl/private, но если используется Let's Encrypt, certbot сам кладёт их в /etc/letsencrypt/live/example.com, и этот путь стал стандартом. Права на файл приватного ключа должны быть 600 или ниже, иначе другие пользователи смогут его прочитать, что приведёт к компрометации. Вместо отдельного файла сертификата мы рекомендуем использовать полную цепочку fullchain.pem.

Базовые директивы server-блока

В файле конфигурации Nginx внутри блока server нужно указать listen 443 ssl http2, а затем прописать ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem и ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem. Включение HTTP/2 заметно ускоряет загрузку сайта и улучшает пользовательский опыт. Не забудьте про директиву server_name example.com www.example.com, которая определяет, для каких доменов работает этот блок.

Перенаправление HTTP на HTTPS

Пользователи не всегда заходят на сайт с префиксом https, поэтому в блоке на порту 80 нужно добавить return 301 https://$server_name$request_uri и автоматически перенаправлять весь трафик на защищённую версию. Это особенно важно для SEO, потому что Google индексирует только одну версию сайта и дублирование контента может негативно сказаться на позициях. Все ссылки внутри сайта тоже должны указывать на HTTPS, иначе появятся предупреждения о смешанном контенте.

Современные настройки шифрования

Отключите устаревшие протоколы TLS 1.0 и 1.1, оставив только TLS 1.2 и 1.3, как этого требуют современные стандарты безопасности. Добавьте ssl_protocols TLSv1.2 TLSv1.3 и настройте ssl_ciphers по профилю Mozilla Modern. Включение OCSP Stapling ускоряет загрузку, потому что браузер не отправляет отдельный запрос на проверку статуса сертификата. Добавьте ssl_stapling on и ssl_stapling_verify on для активации этой функции.

Заголовок HSTS

Заголовок Strict-Transport-Security сообщает браузеру всегда подключаться только по HTTPS и игнорировать HTTP-версию сайта. Добавьте add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always в server-блок, и браузеры будут считать ваш сайт исключительно защищённым в течение года. Эта настройка защищает от атак downgrade и значительно повышает уровень безопасности всего проекта.

Практика Sayt.uz

65 процентов инфраструктуры Sayt.uz построено на Nginx, и мы предоставляем клиентам оптимальные SSL-настройки по умолчанию. Каждый VPS поставляется с включёнными HTTP/2, TLS 1.3, OCSP Stapling и HSTS. В рамках бесплатной миграции технические специалисты переводят существующую конфигурацию Apache или LiteSpeed на Nginx за четыре часа в среднем. Стоимость услуги VPS начинается от 150 000 сум в месяц и включает настройку SSL.

Похожие статьи

📱 SSL pinning: самая надежная защита мобильных приложений от MITM-атак 🤝 Процесс SSL handshake: внутренняя механика TLS-рукопожатия по этапам 🔓 Пропал зеленый замок HTTPS: причины и пошаговое исправление Мониторинг срока действия SSL: системы оповещений и автоматические проверки
🌐 Язык
🇺🇿 O'zbek 🇺🇿 Ўзбек 🇷🇺 Русский 🇬🇧 English