Standardbehandlung für nicht übereinstimmende Domänen/Subdomänen in Apache

Standardbehandlung für nicht übereinstimmende Domänen/Subdomänen in Apache

Ich habe eine Apache2-Konfiguration mit mehreren VirtualHosts. Mein DNS ist so eingestellt, dass es mehrere Domänen akzeptiert *.<domain>.<tld>. Alles funktioniert richtig, aber wenn ich gehe, something-random-here.example.comwird anscheinend ein ungültiger VirtualHost ausgewählt (ich vermute, der erste oder letzte, den er findet). Gibt es eine Möglichkeit, Apache anzuweisen, bestimmte Regeln zu verwenden, wenn keiner der VirtualHost-Einträge mit der Domäne oder Subdomäne übereinstimmt? Ich würde am liebsten eine 404-Fehlermeldung zurückgeben.

Antwort1

Apache verwendet den ersten virtuellen Host, wenn kein Name übereinstimmt. Konfigurieren Sie einfach einen neuen virtuellen Host als ersten mit einem zufälligen Namen, der anzeigt, was Sie möchten – oder eine 404-Seite zurückgibt.

Antwort2

Platzhalter für die Einbeziehung Ihrer Site-Konfigurationsdateien:

Include path/to/site/confs/*httpd.conf

Organisieren Sie Ihre Site-Conf-Dateien so, dass sie in der erwarteten Reihenfolge geladen werden. Beispiel ...

01-httpd.conf

02-site1-httpd.conf

03-site2-httpd.conf

usw...

Apache liest diese der Reihe nach. Erstellen Sie dann eine, die immer zuletzt geladen wird, um alle nicht übereinstimmenden virtuellen Hosts abzufangen und eine 404-Fehlermeldung zurückzugeben, anstatt eine Standardsite zu laden.

99-catchall-httpd.conf

<VirtualHost *:8080>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

<VirtualHost *:8443>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

Stellen Sie sicher, dass Sie die Ports durch die Ports ersetzen, die Ihr httpd abhört. Oder wenn Sie httpd auf bestimmten Schnittstellen abhören lassen, müssen Sie stattdessen einen Catchall für jede Schnittstelle hinzufügen, wie folgt:

<VirtualHost 192.168.1.101:8080>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>
<VirtualHost 192.168.1.101:8443>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

<VirtualHost 192.168.1.102:8080>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

<VirtualHost 192.168.1.102:8443>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

Hoffe, das hilft. Ich verwende diese Methode, um Sites in der von mir angegebenen Reihenfolge zu laden und zu verhindern, dass nicht übereinstimmende virtuelle Hosts unbeabsichtigt eine unerwartete Site laden.

Antwort3

Wie Moritz Botherwähnt verwendet Apache2 den ersten virtuellen Host, den es findet, wenn dieser mit keinem Ihrer angeforderten Hosts übereinstimmt.

Wenn Sie Apache2 zum ersten Mal installieren, gibt es eine Standard-Website-Konfiguration, die Sie als Vorlage verwenden, ändern oder löschen können, und ich habe mich immer gefragt, wozu die 000-default.conf eigentlich dient, denn sie hatten auch eine default.conf. Nachdem ich das Moritz BothGesagte gelesen habe, ergibt das alles jetzt mehr Sinn.

Was ich für meinen Server getan habe, war, die Konfiguration für den Standard-Hostnamen (Website) in die Datei 000-default.conf zu kopieren und a2ensite 000-default.

Wenn jetzt eine nicht übereinstimmende Domänenanforderung an meine Website eingeht, wird die Seite 000-default angezeigt, die lediglich eine Kopie meiner tatsächlichen Standardseite ist.

verwandte Informationen