NGINX: Редирект c WWW Настраиваем редиректы в NGINX

Всем привет!
На днях попался мне онлайн тест веб-сайта.
Решил воспользоваться проверкой, получил в выдаче несколько ошибок, одна из которой звучала как:

Редирект c WWW
Технически, домены с www и без www – это два разных ресурса, поисковые системы индексируют и ранжируют их отдельно, а ссылки будут иметь разный вес.
Это может грозить: Понижением в поисковой выдаче; Фильтром, т.к. поисковик может принять один сайт за дубликат другого;
Проблемами с авторизацией на сайте и другим функционалом, использующим cookie;
Проблема решается 301 редиректом и указанием поисковикам основного зеркала.
С точки зрения продвижения сайта домен без www лучше, потому что не является доменом третьего уровня, а его длина всегда будет меньше.https://a.pr-cy.ru/
Заодно вспомнил, что в зоне есть запись www.
Давайте исправим это, добавив в конфигурацию nginx запись о редиректе.

Как веб-сервер я использую NGINX.
Правим конфиг NGINX, который отвечает за проблемный сайт:

vi /usr/local/etc/nginx/conf.d/mysite.ru.conf 
server {
        listen 80;
        server_name www.mysite.ru mysite.ru;
        return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name www.mysite.ru;
    ssl_certificate /usr/local/etc/letsencrypt/live/www.mysite.ru/fullchain.pem;
    ssl_certificate_key /usr/local/etc/letsencrypt/live/www.mysite.ru/privkey.pem;
    return 301 https://mysite.ru$request_uri;
}

server {
        listen 443 ssl http2;
        server_name mysite.ru;
        ssl_certificate /usr/local/etc/letsencrypt/live/mysite.ru/fullchain.pem;
        ssl_certificate_key /usr/local/etc/letsencrypt/live/mysite.ru/privkey.pem;
        index index.php;
        root  /usr/local/www/mysite.ru;
 
location ~ \.php$ {
      ............
      }
}

В первой секции server мы описали два сайта  www.mysite.ru, mysite.ru и делаем редирект на https  
Во второй секции server описываем сайт www.mysite.ru для работы по ssl.
Третья секция описывает редирект  www.mysite.ru на mysite.ru.
Получим сертификат от Lets’n Crypt для домена www.mysite.ru:

# certbot certonly -w /usr/local/www/mysite.ru/ -d www.mysite.ru
Выхлоп Certbot
Saving debug log to /var/log/letsencrypt/letsencrypt.log
How would you like to authenticate with the ACME CA?
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel): 2
Plugins selected: Authenticator webroot, Installer None
Obtaining a new certificate Performing the following challenges:
http-01 challenge for www.marvins.ru
Using the webroot path /usr/local/www/marvins.ru for all unmatched domains.
Waiting for verification…
Cleaning up challenges IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
/usr/local/etc/letsencrypt/live/www.mysite.ru/fullchain.pem
Your key file has been saved at:
/usr/local/etc/letsencrypt/live/www.mysite.ru/privkey.pem
Your cert will expire on 2020-09-26. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
“certbot renew”
– If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Проверяем корректность конфигурационного файла и перезапускаем nginx:

# nginx -t && nginx -s reload

Всем пока:)!

0 0 голосовать
Рейтинг статьи
Подписаться
Уведомление о
guest
0 Комментарий
Встроенные отзывы
Просмотр всех комментариев