Gibt es eine Möglichkeit, einen virtuellen Apache 2-Host mit einem teilweisen Servernamen zu definieren?

Gibt es eine Möglichkeit, einen virtuellen Apache 2-Host mit einem teilweisen Servernamen zu definieren?

Ich habe ein Tool, das Apache 2-Konfigurationsblöcke generiert. Ich möchte, dass die generierten Daten unabhängig vom tatsächlichen Servernamen sind, ohne dass sie jedoch tatsächlich auf der Apache-Konfiguration des Zielcomputers ausgeführt werden bzw. diese analysieren müssen.

Mit anderen Worten, was ich brauche, ist so etwas wie das hier:

<VirtualHost *>
   ServerName foobar    // <-- no top level domain
   ...
</VirtualHost>

Aus den Dokumenten geht hervor, dass das Feld ServerName immer der vollqualifizierte Domänenname sein muss und daher grundsätzlich kein Vhost-Block geschrieben werden kann, ohne den FQDN des Zielservers zu kennen. Stimmt das oder gibt es eine Problemumgehung?

Antwort1

Ja, es ServerNamemuss eine echte Serveridentifikation sein, es kann aber auch eine IP-Adresse sein. ServerAliaskönnen andererseits Platzhalter enthalten. Dokumentationerwähnt dies.

Aber es heißt auch, dass es nicht erforderlich ist

Wenn kein Servername angegeben ist, versucht der Server, den für den Client sichtbaren Hostnamen abzuleiten, indem er zuerst das Betriebssystem nach dem Systemhostnamen fragt. Wenn dies fehlschlägt, führt er eine umgekehrte Suche nach einer im System vorhandenen IP-Adresse durch.

Antwort2

Weder einServerNamenoch einServerAliassind erforderliche Anweisungen in einem VirtualHost-Block.

Diese können Sie einfach weglassen.

Im Handbuch wird erklärt, wann Sie das tun:

Wenn „Nein“ ServerNameangegeben ist, versucht der Server, den für den Client sichtbaren Hostnamen abzuleiten, indem er zuerst das Betriebssystem nach dem System-Hostnamen fragt. Wenn dies fehlschlägt, führt er eine umgekehrte Suche nach einer im System vorhandenen IP-Adresse durch.

Das könnte genau das sein, was Sie brauchen.

Zusätzlich,in der PraxisDiese Anweisungen akzeptieren außerdem fast alle Zeichenfolgen.
Ein einzelnes Wort wie „ localhostoder“ testund „ examplereicht aus“, ebenso wie Dinge, die eher wie FQDNs aussehen, aber keine wirklich funktionierenden DNS-Namen sind, wie „ there.is.no.tld.named.serverfault.Die Verwendung solcher Namen kann zu einer Startwarnung im Fehlerprotokoll führen (die Sie vermeiden können, indem Sie diese Zeichenfolge zu hinzufügen /etc/hosts) und kann zu einer Situation führen, in der Apache httd Ihren VirtualHost-Block nicht von anderen vorhandenen unterscheiden kann und Ihre Einstellungen nicht wirksam werden.https://httpd.apache.org/docs/2.4/vhosts/details.html

verwandte Informationen