2015-03-17 25 views
11

Mam stronę internetową na VPS.jak wyłączyć bezpośredni dostęp do strony internetowej pod adresem ip

Problem, który mam, polega na tym, że kiedy wchodzę na adres IP serwera, prowadzi on do strony internetowej.
Nawet podczas wprowadzania adresu mail.domain.com robi to samo.

Jak to wyłączyć, aby odwiedzający otrzymał wiadomość lub został skierowany do domeny?

Próbowałem wyłączyć IP i wysłać rekord na flar chmury, ale to nie zadziałało.

Moja konfiguracja to:

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

Możesz użyć .htaccess, jeśli jest to serwer apache. –

+0

Naprawiono gramatykę i formatowanie –

Odpowiedz

1

Możesz spróbować ustawić adres IP serwera w:

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

Więc wygląda to tak:

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

Następnie można określić poddomeny vhost, jak:

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

A głównym domeny, jak:

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

Następnie uruchom Nginx:

/etc/init.d/nginx restart 

vhost Każdy powinien mieć swój własny plik * .conf (dla lepszej organizacji), takich jak:

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

Czy wszystkie pliki '* .conf' zostaną odczytane automatycznie? Czy muszę je gdzieś umieścić? – luckydonald

+0

@luckydonald nginx.conf automatycznie zawiera wszystkie pliki w katalogu conf.d z 'include /etc/nginx/conf.d/*. Conf;' – Ron

14

Możesz użyć przekierowania, konfiguracja nginx:

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

Specyficznym problemem, który jest tutaj omawiany, jest to, że adres IP musi być jawnie zdefiniowany i przekierowany lub zablokowany przez 403 lub podobne.Usunąłem wszystkie odniesienia do mojego adresu IP w konfiguracji i nadal pokazywałem się w IP - to doprowadzało mnie do szału. Wydaje się jednak, że cofa się do zezwolenia na dostęp IP, jeśli nie zostanie nadpisany. Dzięki! –

13

Możesz dodać dyrektywę serwera przed innymi.

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

Czy to zadziała, jeśli jeden z pozostałych bloków serwera ma "default_server"? Czy '_' ma specjalne znaczenie? – mpen

+0

Od https://nginx.org/en/docs/http/server_names.html: W przykładach serwera typu catch-all można zobaczyć dziwną nazwę "_": ... W tej nazwie nie ma nic szczególnego, jest jednym z wielu niepoprawnych nazw domen, które nigdy nie krzyżują się z żadnym prawdziwym imieniem. Inne nieprawidłowe nazwy, takie jak "-" i "! @ #" Mogą być również użyte. – uhelp

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

if ($ host! = ... – braks

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

musisz określić default_server parametr tak, że wszystkie dostępne non żądania serwer przechodzi do tego server block który rzuca 444 error.

444: Połączenie zamknięte BEZ ODPOWIEDZI

ref: https://httpstatuses.com/444

+0

Powinieneś wyjaśnić, co oznacza słowo "444". Nie widziałem tego wcześniej. Https://httpstatuses.com/444 – mpen

0

można powrócić żadnego błędu można znaleźć odpowiednie. Listę błędów można znaleźć tutaj: List_of_HTTP_status_codes

server { 
    listen  x.x.x.x:80; 
    server_name x.x.x.x; 
    return  404; 
} 
Powiązane problemy