Disons que j'ai un site Web example.com
et qu'il pointe sur 12.23.42.31
. Maintenant, je veux que personne ne puisse accéder à mon site Web par l'adresse IP (12.23.42.31
). Quelle est la procédure pour y parvenir?
Serveur LAMP avec WordPress. Hébergement non partagé.
Étant donné que vous avez indiqué qu'il s'agit d'un serveur LAMP et que vous disposez d'un accès SSH, vous pouvez le faire tout simplement avec un VirtualHost par défaut de type 000, comme celui-ci (en remplaçant example.com par votre domaine):
<VirtualHost *:80>
Redirect permanent / http://www.example.com/
</VirtualHost>
Les méthodes de réécriture sont inutiles et la redirection fournit meilleure sécurité contre les attaques d'en-tête de l'hôte . En omettant les méthodes habituelles .htaccess ou PHP et en effectuant une redirection, vous obtenez les meilleures performances possibles, bien que cela ne soit probablement pas une préoccupation si la plupart des demandes concernent votre domaine et non l'adresse IP.
Pour être complet, voici comment procéder avec Nginx:
server {
listen 80 default_server;
return 444;
}
Une légère différence, la réponse de Nginx sur 444 signifie "pas de réponse" et la connexion est immédiatement interrompue. Dans le cas peu probable où vous voudriez utiliser une redirection à la place, vous pouvez changer la directive return 444
en return 301 http://www.example.com/
.
Il est vraiment peu probable que le trafic légitime de vos utilisateurs demande à votre site par son adresse IP. Ne perdez donc pas beaucoup de temps à essayer de vous adapter. Supprimez ou redirigez le trafic à la place.
Si vous voulez bloquer tous les utilisateurs qui essaient d'accéder à votre site Web d'une autre manière que votre nom de domaine, vous pouvez le faire:
<VirtualHost example.com:80>
ServerName example.com
ServerAdmin [email protected]
UseCanonicalName Off
<If "tolower(%{SERVER_NAME}) != 'example.com'">
AllowOverride None
Require all denied
</If>
</VirtualHost>
Tous les accès essayant d'une autre manière que example.com entraîneront:
403 Interdit
Vous n'êtes pas autorisé à accéder à/sur ce serveur.
AUTRE MANIER, RESULTAT DIFFERENT:
Si vous voulez créer une règle de réécriture, tous les accès seront essayés autrement example.com entraînera un redirection vers example.com , vous pouvez créer une règle de redirection simple comme celle-ci:
RewriteCond %{HTTP_Host} !^example.com
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
Pour www:
RewriteCond %{HTTP_Host} !^www\.example.com
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
Si vous ne voulez pas que le site réponde à l'adresse IP, je mettrais en œuvre un hôte virtuel dans Apache. Définissez la racine virtuelle sur un autre répertoire du serveur Apache.
Désormais, tout le trafic est configuré par défaut vers un emplacement différent de votre site occupé.
Sinon, comme je l'ai déjà indiqué, j'utiliserais une redirection. Personnellement, j'utiliserais le style htaccess. Après avoir testé dans le fichier .htaccess, je déplacerais les instructions dans mon fichier de configuration hôte virtuel. Notant que j'ai toujours un accès complet à mes serveurs privés.
EDIT: Avez-vous changé votre httpd.conf aka Apache2.conf? Sinon, pas de problème, votre route par défaut devrait être /var/www/html
Si vous avez modifié cela, je vous recommande de le rétablir.
Voici un exemple de fichier de configuration Apache pour l'un de mes sites de test de développement exécutant Apache 2.2 sur CentOS 6.5. Si vous sélectionnez l'adresse IP ou le nom par défaut du serveur d'hébergement, vous trouverez la page de test Apache ou une simple page blanche sans contenu.
NameVirtualHost *
<VirtualHost *>
ServerName search??.info
ServerAlias *.search??.info
DocumentRoot /data/steven/cms5/test
<Directory /data/steven/cms5/test>
Options All
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Voici un exemple de fichier de configuration sur mon poste de travail basé sur Ubuntu (menthe 17). De nouveau, si vous référencez l'adresse IP ou le nom du serveur par défaut, vous rencontrerez une page par défaut.
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName cms5.dev
ServerAlias *.cms5.dev
DocumentRoot /var/www/html/cms5/public
<Directory /var/www/html/cms5/public>
Options All
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
<IfModule mod_rewrite.c>
<Directory "/var/www/html/cms5/">
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</Directory>
<Directory "/var/www/html/cms5/public">
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</Directory>
</IfModule>
En outre, vous pouvez voir ici que j'ai déplacé les directives .htaccess vers ce fichier conf.
Voici quelques options de redirection que vous pouvez utiliser dans .htaccess
. Celles-ci couvrent divers cas d’adresse IP brute, l’IP en quelque sorte bouchée avec www, le sous-domaine util Host (pour le domaine de l’addon), le mode cible www, le mode cible HTTPS, etc. . Permutez/éditez les 2 dernières lignes pour les modes www et HTTPS:
RewriteCond %{HTTP_Host} ^(www\.)?123\.123\.123\.123 [OR]
RewriteCond %{HTTP_Host} ^(www\.)?example\.hostname\.com$ [NC,OR]
RewriteCond %{HTTP_Host} ^example\.com$ [NC]
RewriteRule ^(.*)$ "https://www\.example\.com/$1" [R=301,L]
Facile. Il suffit de faire une redirection de l'adresse IP vers le nom de domaine.
Méthode 1
Une bonne façon de le faire si votre serveur le supporte est de créer un fichier PHP contenant les éléments suivants:
<?php
header("HTTP/1.1 301 Redirect",true);
header("Location: http://example.com",true)
?>
<html><head><title>Redirect</title><body>
<a href="http://example.com">Click here to continue</a>
</body></html>
puis enregistrez-le sous le nom index.php dans le dossier racine du document de votre adresse IP (probablement dans le dossier htdocs).
Méthode 2
Si votre serveur est Apache, si le module de réécriture est installé et permet les modifications de configuration via des fichiers .htaccess, créez-le et enregistrez-le dans le répertoire racine de votre adresse IP avec le contenu suivant:
RewriteEngine On
RewriteRule ^(.*)$ http://example.com [R=301,L]
La bonne chose avec la méthode 2 est qu’elle redirige TOUT URL commençant par l’adresse IP vers la page d’accueil exemple.com.
Assurez-vous simplement de placer tous les fichiers de votre site Web dans le dossier racine du document exemple.com.
et bien sûr, remplacez exemple.com dans ma réponse par votre nom de domaine.