Faça com que o servidor Apache aceite apenas pedidos para domínio em vez de IP

8

Eu tenho um servidor CentOS rodando o Apache 2.2.15. Se o endereço IP do servidor é 198.51.100.4 e eu escrevo no navegador link ele vai no meu site.

Eu quero evitar isso. Quero que meu website seja acessível apenas no FQDN, ou seja, no link .

Como posso configurar meu servidor para que o site não esteja acessível quando eu visitar o endereço IP?

    
por antiks 14.12.2015 / 12:24

3 respostas

6

Você pode usar Alias * para capturar qualquer outro tráfego que não seja o permitido em seu host virtual; para isso, você precisa usar na última posição um host virtual com * como alias.

Assim somente o domínio definido será exibido.

<VirtualHost *:80>
ServerName mywebsite.com
DocumentRoot /var/www/default
...
</VirtualHost>

<VirtualHost *:80>
ServerName another.mywebsite.com
DocumentRoot /var/www/another
...
</VirtualHost>

# /!\ THIS HAS TO BE ON THE LAST POSITION /!\
<VirtualHost *:80 *:443>
# [ Server Domain ]
ServerName localhost
ServerAlias *
# [ Cancel trafic ]
RewriteRule .* - [END,R=406]
# [ Custom Log ]
CustomLog ${APACHE_LOG_DIR}/other.log combined
</VirtualHost>

No meu exemplo, apenas mywebsite.com & another.mywebsite.com será permitido, todos os outros domínios ou IP terão o tráfego cancelado.

Para cancelar o tráfego, você pode usar um redirecionamento para - e adicionar um código de erro, por exemplo, eu usei uma RewriteRule para redirecionar para 406 Não Aceitável ( R=406 ).

Aqui você encontra a lista de códigos de redirecionamento: link

    
por 14.12.2015 / 17:45
11

Você pode adicionar um host virtual padrão que apenas forneça um erro "negado" ou o que for. Quando um navegador chega ao seu servidor da web sem um host na URL que corresponde a qualquer ServerName ou ServerAlias linhas em outros hosts virtuais, ele será servido pelo host virtual padrão.

Então, na sua configuração do apache:

<VirtualHost *:80>
    ServerName default
    DocumentRoot /var/www/default
    ...
</VirtualHost>

<VirtualHost *:80>
    ServerName mywebsite.com
    ...
</VirtualHost>
    
por 14.12.2015 / 14:05
0

Você precisa de uma regra de reescrita como esta:

 RewriteEngine On
 RewriteCond %{HTTP_HOST} !^mywebsite.com$
 RewriteRule /.* https://mywebsite.com/ [R]
    
por 14.12.2015 / 13:09