2015-03-17 3 views
11

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

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

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

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

Моя установка:

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

Вы можете использовать .htaccess, если это сервер Apache. –

+0

Исправлена ​​некоторая грамматика и форматирование –

ответ

1

Вы можете попытаться установить 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 

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

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

Будут ли считаться все файлы '* .conf' автоматически? Или мне нужно включить их где-нибудь? – luckydonald

+0

@luckydonald nginx.conf автоматически включает в себя все файлы в каталоге conf.d с 'include /etc/nginx/conf.d/*. Conf;' – Ron

14

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

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

. Конкретная проблема, которая рассматривается здесь, заключается в том, что IP-адрес должен быть явно определен и перенаправляется или блокируется с помощью 403 или таких.Я удалил все ссылки на свой IP-адрес в конфиге, и он все еще появился на IP-сервере, и это заставило меня с ума сойти. Но похоже, что он возвращается к разрешению IP-доступа, если не перезаписывается. Благодаря! –

13

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

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

Будет ли это работать, если один из других блоков сервера имеет 'default_server'? У '_' есть особое значение? – mpen

+0

От https://nginx.org/en/docs/http/server_names.html: В примерах сервера catch-all можно увидеть странное имя «_»: ... Нет ничего особенного в этом имени, это является лишь одним из множества недопустимых имен доменов, которые никогда не пересекаются с каким-либо реальным именем. Также могут использоваться другие недопустимые имена, такие как «-» и «! @ #». – uhelp

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

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

444: ПОДКЛЮЧЕНИЕ ЗАКРЫТО БЕЗ ОТВЕТА

исх: https://httpstatuses.com/444

+0

Вы должны объяснить, что означает '444'. Я не видел этого раньше. Https://httpstatuses.com/444 – mpen

0

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

server { 
    listen  x.x.x.x:80; 
    server_name x.x.x.x; 
    return  404; 
} 
Смежные вопросы