Ich verwende einen Apache-Webserver unter CentOS und muss die Möglichkeit für Benutzer deaktivieren, auf die Website zuzugreifen, indem die IP-Adresse des Servers in einem Webbrowser verwendet wird. Ich möchte, dass jemand, der versucht, zur IP-Adresse zu navigieren, eine verbotene Fehlermeldung erhält.
Welche Konfigurationen wären dazu notwendig?
apache-2.2
centos
Amr Elkhedewy
quelle
quelle
Sie können dies mit mod_rewrite erreichen (entweder in der
.htaccess
Datei oder im Standardserverkontext oder in einem separaten VirtualHost, in demServerName
die IP-Adresse des Hosts angegeben ist):Dies bedeutet, dass, wenn der HTTP_HOST-Header mit der IP-Adresse 1.2.3.4 übereinstimmt, jede Anforderung mit a beantwortet werden sollte
403 Forbidden
. Eine Anforderung mit einem anderen HTTP_HOST-Header (z. B. einer mit dem tatsächlichen Domänennamen anstelle der IP-Adresse) sollte nicht betroffen sein.quelle
Sie können den direkten Zugriff per IP nicht blockieren. Sie müssen die Verbindung zulassen, dann aber entscheiden, was damit geschehen soll. Dies kann ein 403, ein 404 sein oder sie auf die gewünschte Seite umleiten. Sie können dies mit mod_rewrite tun.
Dies entspricht dem vom Webclient übergebenen HTTP-HOST-Header. Alle anderen Anfragen würden durchgehen.
Möglicherweise möchten Sie jedoch Ihre URLs für SEO-Zwecke normalisieren.
Mit diesem Ansatz schreiben Sie alles neu, was nicht zum gewünschten Ergebnis passt.
Referenz: https://httpd.apache.org/docs/2.0/rewrite/rewrite_guide.html#canonicalurl
Referenz: http://en.wikipedia.org/wiki/URL_normalization
quelle
Diese Lösung deckt nicht alle Fälle ab.
Ersetzen Sie eine beliebige Zahl oder einen Punkt in der IP-URL durch% ##, z. B. 1 durch% 31 ... 8 durch% 38, und Sie gelangen auf die IP, nicht auf die Domain-URL.
Angenommen, diese schlechte IP wird verwendet, um die Erklärung zu vereinfachen: 123.45.6.789
Sie müssen die 2 Alternativen für alle Ziffern und Punkte verwenden: Punkt ist% 2E und 0..9 sind% 30 ..% 39
Hässlich, es kann mit {1,3} reduziert und auf eine gültige IP beschränkt werden, aber wie es für Ihre IP ist, ist dies nicht erforderlich.
Vergessen Sie nicht die Ports wie ": 80". HTTP_HOST enthält es und SERVER_NAME ist nicht zuverlässig.
quelle