Stellen Sie sicher, dass der Apache-Server nur Anforderungen an die Domäne und nicht an die IP akzeptiert

9

Ich habe einen CentOS-Server mit Apache 2.2.15. Wenn die IP-Adresse des Servers 198.51.100.4 lautet und ich im Browser http://198.51.100.4 schreibe, wird sie auf meiner Website angezeigt .

Ich möchte das verhindern. Ich möchte, dass meine Website nur über den vollqualifizierten Domänennamen ( http://example.com/) zugänglich ist .

Wie kann ich meinen Server so konfigurieren, dass auf die Website nicht zugegriffen werden kann, wenn ich die IP-Adresse besuche?

antiks
quelle
2
Mögliches Duplikat von Apache, das Anfragen an andere Server akzeptiert?
Jenny D
Während die Frage nicht ganz mit dem Duplikat übereinstimmt, mit dem ich verlinkt habe, ist die Antwort auf diese Frage auch die Antwort auf diese Frage.
Jenny D
Ich bin gespannt, warum Sie das tun würden. Reverse DNS ist eine Sache.
NJZK2

Antworten:

7

Sie können Alias *jeden anderen Verkehr als den in Ihrem virtuellen Host zulässigen abfangen. Dazu müssen Sie an der letzten Position einen virtuellen Host mit einem *Alias ​​verwenden.

Auf diese Weise wird nur eine definierte Domain bedient.

<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>

In meinem Beispiel sind nur mywebsite.com und another.mywebsite.com zulässig. Bei allen anderen Domains oder IP-Adressen wird der Verkehr abgebrochen.

Um den Verkehr abzubrechen, können Sie eine Umleitung zu verwenden -und dann einen Fehlercode hinzufügen. Beispielsweise habe ich eine RewriteRule verwendet, um zu 406 Not Acceptable ( R=406) umzuleiten .

Hier finden Sie die Liste der Weiterleitungscodes: https://fr.wikipedia.org/wiki/Liste_des_codes_HTTP

Froggiz
quelle
Vielen Dank! Ich habe deine Methode ausprobiert und sie funktioniert. Aber ich habe mich ein bisschen verändert. Ich habe einen neuen virtuellen Host erstellt und als Servername die IP-Adresse des Servers + RewriteRule angegeben :)
antiks
11

Sie können einen virtuellen Standardhost hinzufügen, der nur einen "abgelehnten" Fehler oder was auch immer ausgibt. Wenn dann ein Browser ohne Host in der URL zu Ihrem Webserver gelangt, der mit einem ServerNameoder ServerAliasmehreren Zeilen in anderen virtuellen Hosts übereinstimmt, wird dieser vom virtuellen Standardhost bereitgestellt.

Also in deiner Apache-Konfiguration:

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

<VirtualHost *:80>
    ServerName mywebsite.com
    ...
</VirtualHost>
wurtel
quelle
1

Sie benötigen eine Umschreiberegel wie folgt:

 RewriteEngine On
 RewriteCond %{HTTP_HOST} !^mywebsite.com$
 RewriteRule /.* https://mywebsite.com/ [R]
Kobus
quelle
Dies macht nicht das, was das OP verlangt hat.
Leichtigkeitsrennen im Orbit