Как перенаправить www в Non-www с Nginx в Ubuntu 14.04

Вступление

Если у вас есть веб-сайт или приложение, запущенное и работающее за доменом, часто желательно, чтобы ваши пользователи также имели к нему доступ через простое доменное имя and субдомен * www *. То есть они должны иметь возможность посещать ваш домен с префиксом «http: // www. [Www.]» Или без него, например. + example.com + или + www.example.com + в веб-браузере и будут представлены с одинаковым содержанием. Несмотря на то, что существует множество способов его настройки, наилучшим решением с точки зрения согласованности и SEO является выбор домена, который вы предпочитаете, обычный или www, и перенаправление другого на предпочитаемый домен. Этот тип перенаправления называется * Permanent Redirect * или «301 redirect», и его можно легко настроить, правильно настроив записи ресурсов DNS и программное обеспечение веб-сервера.

Из этого туториала Вы узнаете, как перенаправить URL-адрес www на сайт без www, например + www.example.com + to + example.com +, с Nginx в Ubuntu 14.04. Мы также покажем вам, как перенаправить в другом направлении, с URL-адреса без www на http: // www [www]. Версия этого руководства для CentOS 7 доступна по адресу here.

Если вы хотите выполнить такой тип перенаправления с Apache в качестве веб-сервера, вам следует следовать этому руководству: https://www.digitalocean.com/community/tutorials/how-to-redirect-www-to-non-www -with-apache-on-ubuntu-14-04 [Как перенаправить www на не-www с помощью Apache в Ubuntu 14.04].

Предпосылки

В этом руководстве предполагается, что у вас есть привилегии суперпользователя, т.е. + sudo + или root на сервере под управлением Nginx. Если у вас еще нет этой настройки, следуйте этому руководству: Initial Server Setup в Ubuntu 14.04 ,

Предполагается, что у вас установлен Nginx. Если у вас этого еще нет, есть несколько учебных материалов по этому вопросу в теге Nginx.

Вы должны иметь возможность добавлять записи в DNS, который управляет вашим доменом. Если у вас еще нет домена, вы можете приобрести его у регистратора доменов и управлять им с помощью DNS-сервера или https://www.digitalocean.com/community/tutorials/how-to-point-to-digitalocean-. регистраторы имен из общего домена [DNS DigitalOcean]. В этом руководстве мы будем использовать DigitalOcean DNS для создания необходимых записей.

Давайте начнем с настройки ваших записей DNS.

Настроить записи DNS

Чтобы настроить желаемое перенаправление, с «+ www.example.com » на « example.com +» или наоборот, вы должны иметь запись * A * для каждого имени.

Откройте все, что вы используете для управления DNS. В нашем примере мы будем использовать DigitalOcean DNS.

Если запись домена (также известная как зона) еще не существует, создайте ее сейчас. * Hostname * должен быть вашим доменом, например + example.com +, и IP-адрес должен быть установлен на публичный IP-адрес вашего сервера Nginx. Это автоматически создаст запись A, которая указывает ваш домен на указанный вами IP-адрес. Если вы используете другую систему для управления доменом, возможно, вам придется добавить это вручную.

Затем добавьте еще одну запись A с «www» в качестве имени хоста (или «http://www.example.com [www.example.com]», если частичный поддомен не работает) и укажите тот же IP-адрес.

Когда вы создали обе записи, они должны выглядеть примерно так:

изображение: https: //assets.digitalocean.com/articles/redirect/dns_a_records.png [обязательные записи A]

Теперь ваш сервер должен быть доступен через домен www и не www, но нам все еще нужно настроить перенаправление. Мы сделаем это сейчас.

Настроить перенаправление Nginx

Чтобы выполнить перенаправление 301, вы должны добавить новый блок сервера Nginx, который указывает на ваш оригинальный блок сервера.

Откройте конфигурацию блока вашего сервера Nginx в редакторе. Мы будем использовать файл конфигурации по умолчанию, + / etc / nginx / sites-enabled / default +, в нашем примере:

sudo vi /etc/nginx/sites-enabled/default

Ваш оригинальный блок сервера уже должен быть определен. В зависимости от того, в каком направлении вы хотите перенаправить, используйте один из следующих вариантов.

Вариант 1: Перенаправить www на не-www

Если вы хотите перенаправить пользователей с www на обычный домен без www, вставьте эту конфигурацию:

Новый блок сервера - с www на не-www

server {
   server_name www.;
   return 301 $scheme://$request_uri;
}

Сохранить и выйти. Это настраивает Nginx для перенаправления запросов с «http://www.example.com [www.example.com]» на «example.com». Обратите внимание, что должен быть другой блок сервера, который определяет ваш веб-сервер без www.

Чтобы изменения вступили в силу, перезапустите Nginx:

sudo service nginx restart

Обратите внимание, что если вы используете HTTPS, директива + listen + должна быть установлена ​​на порт + 443 + вместо + 80 +.

Используйте эту команду curl, чтобы убедиться, что домен без www перенаправляет на домен www (замените выделенную часть своим фактическим доменом):

curl -I http://www.

Вы должны получить ответ «+301 Moved Permanently +», который показывает местоположение перенаправления без www, например:

Output:HTTP/1.1 301 Moved Permanently
Server: nginx/1.4.6 (Ubuntu)
Date: Mon, 04 May 2015 18:20:19 GMT
Content-Type: text/html
Content-Length: 193
Connection: keep-alive
Location: http:///

Конечно, вы должны получить доступ к своему домену в веб-браузере (www и не www), чтобы быть уверенным.

Вариант 2: Перенаправление без www на www

Если вы хотите перенаправить пользователей из обычного домена без www в домен www, добавьте этот блок сервера:

Новый блок сервера - без www на www

server {
   server_name ;
   return 301 $scheme://www.$request_uri;
}

Сохранить и выйти. Это настраивает Nginx для перенаправления запросов с «example.com» на «http://www.example.com [www.example.com]». Обратите внимание, что должен быть другой блок сервера, который определяет ваш веб-сервер www.

Чтобы изменения вступили в силу, перезапустите Nginx:

sudo service nginx restart

Обратите внимание, что если вы используете HTTPS, директива + listen + должна быть установлена ​​на порт + 443 + вместо + 80 +.

Используйте эту команду curl, чтобы убедиться, что домен без www перенаправляет на домен www (замените выделенную часть своим фактическим доменом):

curl -I http://

Вы должны получить ответ «+301 Moved Permanently +», который показывает местоположение перенаправления www, например:

Output:HTTP/1.1 301 Moved Permanently
Server: nginx/1.4.6 (Ubuntu)
Date: Mon, 04 May 2015 18:20:19 GMT
Content-Type: text/html
Content-Length: 193
Connection: keep-alive
Location: http://www./

Конечно, вы должны получить доступ к своему домену в веб-браузере (www и не www), чтобы быть уверенным.

Заключение

Это оно! Ваше перманентное перенаправление Nginx теперь настроено правильно, и ваши пользователи смогут получить доступ к вашему веб-серверу через ваш домен не из www и www.

Related