Как отключить прямой доступ к веб-сайту по ip-адресу

У меня есть веб-сайт на VPS.

Проблема, с которой я столкнулась, заключается в том, что когда я ввожу IP-адрес сервера, он ссылается на сайт.
Даже при вводе mail.domain.com он делает то же самое.

Как отключить это, чтобы посетитель получил сообщение или был направлен в домен?

Я попытался отключить IP-адрес и отправить запись на облачную вспышку, но это не сработало.

Моя настройка:

VPS on Linux Debian 
Nginx
no control panel just command line
Cloudflare
DNS setup with BIND

Ответ 1

Вы можете использовать redirect, nginx config:

server {
        listen 80;
        server_name IP_ADDRESS;
        return 301 http://YOUR.DOMAIN;
}

Ответ 2

Вы можете просто добавить директиву сервера перед другими.

server {
    listen 80;
    server_name _;
    return 404;
}

Ответ 3

server {
    listen      80 default_server;
    server_name "";
    return      444;
}

Вам нужно указать параметр default_server, чтобы все не доступные серверные запросы переходили к этому server block, который выдает 444 error.

444: СОЕДИНЕНИЕ ЗАКРЫТО БЕЗ РЕАГИРОВАНИЯ

ref: https://httpstatuses.com/444

Ответ 4

Вы можете попытаться установить IP-адрес сервера в:

/etc/nginx/conf.d/default.conf

Итак, это выглядит так:

server {
    listen 80;
    server_name localhost IP.OF.VPS.HERE;

Затем вы можете указать поддомен vhost, например:

server {
        listen 80;
        server_name subdomain.domain.com;

И основной домен, например:

server {
        listen 80;
        server_name www.domain.com domain.com;

Затем перезапустите Nginx:

/etc/init.d/nginx restart

Каждый vhost должен иметь свой собственный *.conf файл (для лучшей организации), например:

/etc/nginx/conf.d/subdomain.domain.com.conf
/etc/nginx/conf.d/domain.com.conf
/etc/nginx/conf.d/default.conf

Ответ 5

if ($http_host != "example.com") {
    return 301 example.com;
}

Ответ 6

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

server {
    listen      x.x.x.x:80;
    server_name x.x.x.x;
    return      404;
}