Настройка SSL в Nginx. Правильный редирект на https

Настройка SSL в Nginx. Правильный редирект на https

Корпорация Google уже неоднократно заявляла о том, что будет выше ранжировать сайты, которые работают через защищеное соединение. А начиная с этого года ещё и Firefox всячески пытается предупредить своих пользователей о том, что их данные могут оказаться в опасности если попытаться ввести логин и пароль на сайте без SSL шифрования.

Nginx SSL

Таким образом, если у вас есть форум или система комментирования, но сайт работает через не защищенное соединение, то пользователи у которых Firefox будут видеть то, что я показал на скриншоте выше. А это отпугивает посетителей. Поэтому сегодня будем решать эту проблему.

Ранее я уже писал статью о том как заставить работать в связке Apache2 и Nginx, где первый выступает в роли бэкэнда, а второй в роли фронтэнда. И если ваш сайт работает именно в такой связке, то я расскажу в сжатой и доступной форме как защитить передаваемый трафик между сервером и клиентом, используя механизм SSL шифрования.

Редирект https

Для начала вам потребуется сам сертификат безопасности. Без него никак не получится перевести сайт на защищенное соединение. Если он у вас уже есть, то далее всё очень просто.

И так, открываем конфигурационный файл Nginx, а именно nginx.conf. Для начала сразу добавим конфигурацию для редирект с http на https. Для этого перед секцией server своего сайта добавляем:

server {
listen 11.22.33.44:80;
server_name intaiwan.ru www.intaiwan.ru;
rewrite ^(.*) https://$host$1 permanent;
}

На этом всё. Редирект с http на https мы настроили. Теперь переходим ниже, в саму секцию server нашего сайта. Там нам необходимо заменить строчку

listen 11.22.33.44:80;

на

listen 11.22.33.44:443 ssl;

а ниже добавляем строки:

ssl_certificate /папка/папка2/папка3/intaiwan.ru.pem;
ssl_certificate_key /папка/папка2/папка3/intaiwan.ru.key;
ssl_session_cache   shared:SSL:10m;
ssl_session_timeout 10m;
ssl_buffer_size 4k;

Таким образом, настройка редиректа с http на https и защищённого соединения у нас должен выглядеть примерно так:

server {
 listen 11.22.33.44:80;
 server_name intaiwan.ru www.intaiwan.ru;
 rewrite ^(.*) https://$host$1 permanent;
 }
server {
 listen 11.22.33.44:443 ssl;
 server_name intaiwan.ru www.intaiwan.ru;
 charset UTF-8;
 error_page 404 = @fallback;
 ssl_certificate /папка/папка2/папка3/intaiwan.ru.pem;
 ssl_certificate_key /папка/папка2/папка3/intaiwan.ru.key;
 ssl_session_cache shared:SSL:10m;
 ssl_session_timeout 10m;
 ssl_buffer_size 4k;
location / {
 ...
 ...
 ...
 }
}
Кстати, если хотите получать информацию о моих новых статьях, то можете подписаться на мой Телеграм.

А теперь нам необходимо внести небольшую запись в настройки Apache в секцию VirtualHost нашего сайта:

SetEnvIf X-Forwarded-Proto https HTTPS=on

Однако необходимо учитывать один важный момент. Вам необходимо будет переписать пути до картинок, стилей и скриптов с http на https. Иначе страницы будут отображаться с ошибками.

Рейтинг: 5.0 (13 проголосовавших)
Sending