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.