2015-03-17 16 views
11

Ho un sito Web su un VPS.come disabilitare l'accesso diretto a un sito web per indirizzo IP

Il problema che sto avendo è che quando inserisco l'IP del server, si collega al sito web.
Anche quando si digita mail.domain.com, fa la stessa cosa.

Come disabilitarlo, in modo che un visitatore possa ricevere un messaggio o essere indirizzato al dominio?

Ho provato a disabilitare l'IP ea inviare un record su flare cloud ma non ha funzionato.

La mia configurazione è:

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

È possibile utilizzare .htaccess se si tratta di un server Apache. –

+0

Risolti alcuni problemi di grammatica e formattazione –

risposta

1

Puoi provare a impostare l'indirizzo IP del server in:

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

in modo che appaia in questo modo:

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

Quindi è possibile specificare il sottodominio vhost, ad esempio:

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

e il dominio principale, come:

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

quindi riavviare Nginx:

/etc/init.d/nginx restart 

Ogni vhost dovrebbe avere un proprio file .conf * (per una migliore organizzazione), come:

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

Tutti i file '* .conf' vengono letti automaticamente? O devo includerli da qualche parte? – luckydonald

+0

@luckydonald nginx.conf include automaticamente tutti i file nella directory conf.d con 'include /etc/nginx/conf.d/*. Conf;' – Ron

14

È possibile utilizzare il reindirizzamento, nginx config:

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

Il problema specifico qui affrontato è che l'indirizzo IP deve essere definito in modo esplicito e reindirizzato o bloccato con un 403 o simile.Avevo rimosso tutti i riferimenti al mio indirizzo IP nella configurazione e si presentava ancora per l'IP- mi stava facendo impazzire. Ma sembra che torni a consentire l'accesso IP se non sovrascritto. Grazie! –

13

È possibile aggiungere semplicemente una direttiva server prima di altri.

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

Funzionerà se uno degli altri blocchi del server ha 'default_server'? '_' ha un significato speciale? – mpen

+0

Da https://nginx.org/en/docs/http/server_names.html: Negli esempi di server catch-all si può vedere lo strano nome "_": ... Non c'è niente di speciale in questo nome, è solo una di una miriade di nomi di dominio non validi che non si intersecano mai con nessun nome reale. Possono essere ugualmente utilizzati altri nomi non validi come "-" e "! @ #". – 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; 
} 

è necessario specificare default_server parametro in modo che tutte le richieste di server non disponibili va a questo server block che getta 444 error.

444: connessione chiusa SENZA RISPOSTA

ref: https://httpstatuses.com/444

+0

Dovresti spiegare cosa significa "444". Non l'avevo mai visto prima. Https://httpstatuses.com/444 – mpen

0

è possibile restituire ogni errore a trovare adeguato. Un elenco di errori può essere trovato qui List_of_HTTP_status_codes

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