![Gibt es eine Möglichkeit, einen virtuellen Apache 2-Host mit einem teilweisen Servernamen zu definieren?](https://rvso.com/image/769261/Gibt%20es%20eine%20M%C3%B6glichkeit%2C%20einen%20virtuellen%20Apache%202-Host%20mit%20einem%20teilweisen%20Servernamen%20zu%20definieren%3F.png)
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 ServerName
muss eine echte Serveridentifikation sein, es kann aber auch eine IP-Adresse sein.
ServerAlias
kö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 einServerName
noch einServerAlias
sind erforderliche Anweisungen in einem VirtualHost-Block.
Diese können Sie einfach weglassen.
Im Handbuch wird erklärt, wann Sie das tun:
Wenn „Nein“
ServerName
angegeben 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 „ localhost
oder“ test
und „ example
reicht 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