Поиск по сайту:

Как перенаправить IP-адрес на доменное имя в NGINX или Apache


Это крайний случай, но если кто-то введет ваш IP-адрес вместо вашего доменного имени, вам нужно, чтобы ваш сервер правильно обработал этот запрос и перенаправил их на реальный сайт. Мы покажем, как настроить его в NGINX и Apache.

Почему это необходимо?

Почти для каждого запроса пользователи, скорее всего, используют ваше доменное имя, поэтому на практике вы не увидите этой проблемы. Но это легко исправить, и добавить не помешает.

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

Однако лучший и более полный метод — просто обрабатывать все остальные маршруты, возвращая перенаправление. Таким образом, любые пользователи, отправленные на ваш IP-адрес из любого места (даже с неправильными заголовками хоста), будут перенаправлены. Например, если вы хотите указать альтернативные варианты написания вашего домена (например, howtogreek.com) на ваш реальный домен, это перенаправление по умолчанию также работает.

Настройка маршрута по умолчанию в NGINX

Если вы просто хотите прослушивать IP-адрес, вы можете использовать следующую конфигурацию, которая возвращает перенаправление 301 для запросов, сделанных специально для IP-адреса:

server {
  listen 80;
  listen [::]:80;
  server_name 123.123.123.123;
 
  add_header X-Frame-Options "SAMEORIGIN";

  return 301 https://www.example.com$request_uri;
}

Однако вы можете прослушивать несоответствия, используя server_name _, который соответствует только в том случае, если никакое другое правило не соответствует. Вы можете вернуть перенаправление 301 таким же образом:

server {
  listen 80 default_server;
  listen [::]:80 default_server;
  server_name _;

  return 301 https://www.example.com$request_uri;
}

Конечно, как и в случае любого перенаправления 301, вы должны сначала протестировать временные перенаправления 302, чтобы убедиться, что ваша конфигурация верна.

Настройка маршрута по умолчанию в Apache

В Apache вы можете перенаправить IP-запросы на ваше доменное имя, добавив правило перезаписи, соответствующее IP-адресу:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^123.123.123.123$
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

Если вы хотите перенаправить все другие запросы, вы можете сделать это, сопоставив все, что не является вашим доменным именем, но будьте осторожны, чтобы это не конфликтовало ни с какими поддоменами.

RewriteEngine on
RewriteCond %{SERVER_NAME} !=www.example.com
RewriteRule ^ https://www.example.com%{REQUEST_URI} [END,NE,R=301]