Введение
Если на сервере установлен SSL-сертификат, по умолчанию веб-сайт недоступен через защищенное HTTPS-соединение. Вам нужно добавлять « HTTPS » к URL-адресу каждый раз, когда вам нужно безопасно подключиться. Лучший способ обеспечить максимальную безопасность посетителей веб-сайта — включить автоматическое перенаправление с HTTP на HTTPS.
В этом руководстве показано, как перенаправить URL-адрес с HTTP на HTTPS, например, с http://example.it на https://example.it, с помощью Apache в Ubuntu 20.04 LTS.
Предпосылки
В этом руководстве предполагается, что у вас есть привилегии суперпользователя, то есть sudo или root, на сервере с Nginx. Если вы еще не настроили его, следуйте этому руководству: Ubuntu 20.04 LTS Initial Setup.
Предполагается, что Nginx установлен. Если он не установлен, следуйте этому руководству: Как установить Linux Nginx MySQL PHP (LEMP) в Ubuntu 20.04 LTS или Как установить Nginx в Ubuntu 20.04 LTS.
Чтобы установить сертификаты SSL (HTTPS) на Nginx, прочитайте это руководство Как установить Let's Encrypt для Nginx на Ubuntu 20.04 LTS.
Настроить перенаправление с HTTP на HTTPS
Если вы используете SSL-сертификаты, то у вас есть активное соединение с протоколом HTTPS и вы хотите перенаправить с www на не-www (или наоборот) и с HTTP на HTTPS.
Откройте файл конфигурации Nginx:
sudo nano /etc/nginx/sites-available/default
Добавить новый блок сервера в начало файла для управления HTTP-соединениями и перенаправления на HTTPS. Измените параметр server_name, указав свое доменное имя как без www, так и с www, также измените возвращаемый параметр, указав предпочтительный URL-адрес, в нашем случае версию без www, например:
server {
listen 80;
listen [::]:80;
server_name TUO_DOMINIO.it www.TUO_DOMINIO.it;
return 301 https://TUO_DOMINIO.it$request_uri;
}
Сохраните и закройте файл, нажав CTRL + X, затем Y, чтобы сохранить изменения, а затем ENTER, если вы используете nano.
Измените основной серверный блок. Измените параметр Listen на порт 443 и добавьте параметр ssl. Включите путь к вашим сертификатам, если они еще не включены, и в конце блока добавьте условие if, которое устанавливает автоматическое перенаправление на ваш предпочтительный URL-адрес, в данном случае без www. Если вы предпочитаете создать перенаправление без www на www, поменяйте местами server_name и return параметры в обоих блоках сервера.
server {
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name TUO_DOMINIO.it www.TUO_DOMINIO.it;
location /{
try_files $uri $uri/=404;
}
#include your certificates...
if ($host = 'www.TUO_DOMINIO.it') {
return 301 https://TUO_DOMINIO.it$request_uri;
}
}
Таким образом, окончательная конфигурация с перенаправлением с www на не-www с включенным https выглядит следующим образом:
server {
listen 80;
listen [::]:80;
server_name TUO_DOMINIO.it www.TUO_DOMINIO.it;
return 301 https://TUO_DOMINIO.it$request_uri;
}
server {
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name TUO_DOMINIO.it www.TUO_DOMINIO.it;
location /{
try_files $uri $uri/=404;
}
#include your certificates...
if ($host = 'www.TUO_DOMINIO.it') {
return 301 https://TUO_DOMINIO.it$request_uri;
}
}
Перезапустите Nginx:
sudo service nginx restart
Изменения должны вступить в силу немедленно.
Вывод
В этом руководстве мы узнали, как настроить правила перенаправления для Nginx с www на не-www и наоборот, а также для HTTP на HTTP.
Это все! Перенаправление Nginx теперь настроено правильно.