Basta configurar o host virtual padrão. Há um exemplo comentado em httpd.conf
ou algo trivial como:
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/html
</VirtualHost>
Estou usando o servidor web apache no CentOS e preciso desabilitar a capacidade de acesso ao site usando o endereço IP do servidor em um navegador da web. Eu quero que quando alguém tenta navegar para o endereço IP, eles recebam uma mensagem de erro proibida.
Quais configurações seriam necessárias para fazer isso?
Basta configurar o host virtual padrão. Há um exemplo comentado em httpd.conf
ou algo trivial como:
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/html
</VirtualHost>
Você pode conseguir isso com mod_rewrite (no arquivo .htaccess
, ou no contexto do servidor padrão, ou em um VirtualHost separado onde o ServerName
é o endereço IP do host):
RewriteEngine On
RewriteCond %{HTTP_HOST} 1.2.3.4 # Replace with your own IP address
RewriteRule .* - [F]
Isso diz que, se o cabeçalho HTTP_HOST corresponder ao endereço IP 1.2.3.4, qualquer solicitação deverá ser atendida com 403 Forbidden
. Qualquer solicitação que tenha outro cabeçalho HTTP_HOST (por exemplo, um com o nome do domínio real em vez do endereço IP) não deve ser afetada.
Você não pode bloquear o acesso direto por IP. Você deve permitir a conexão, mas depois decidir o que fazer com ela. Isso pode ser um 403, um 404 ou redirecioná-los para a página desejada. Você pode fazer isso com mod_rewrite.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^123\.123\.123\.123
RewriteRule ^(.*)$ - [F,L]
Isso corresponderá ao cabeçalho HTTP HOST passado pelo Web client. Todas as outras solicitações passariam.
No entanto, você pode querer normalizar seus URLs para fins de SEO.
Com essa abordagem, você reescreve qualquer coisa que não corresponda ao resultado desejado.
RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*) http://fully.qualified.domain.name:%{SERVER_PORT}/$1 [L,R]
Referência: link
Referência: link
Esta solução não cobre todos os casos.
Substitua qualquer número ou ponto no URL IP por seu% ## por exemplo, 1 por% 31 ... 8 por% 38 e você chegará no IP, não no URL do domínio.
Suponha que este IP incorreto, usado para facilitar a explicação: 123.45.6.789
Você deve usar as 2 alternativas para todos os dígitos e pontos: o ponto é% 2E e o 0..9 são% 30 ..% 39
RewriteEngine on
RewriteCond %{HTTP_HOST} (1|%31)(2|%32)(3|%33)(\.|%2E)(4|%34)(5%35)(\.|%2E)(6|%36)(\.|%2E)(7|%37)(8|%38)(9|%39)
RewriteRule . - [F]
Feio, pode ser reduzido com {1,3} e restringido a IP válido, mas como é para o seu IP, não há necessidade de fazê-lo.
Não esqueça as portas como ": 80". HTTP_HOST contém e SERVER_NAME não é confiável.
Tags apache-2.2 centos