Mehrere Webseiten unter einer IP auf einem Apache Webserver laufen lassen
Neulich hatte ich die Herausforderung mehrere Domains über eine IP mit Apache laufen zu lassen. Kurz in die Kristallkugel geschaut und siehe da es gibt eine Lösung: NameVirtualHost. Das ist eine prima Sache. Apache entscheidet anhand des HTTP-Headers, welche Seite ausgeliefert wird. Hierfür ist es aber notwendig, dass der Client das HTTP 1.1 Protokoll unterstützt (was bei allen gängigen Webbrowsern der Fall ist)!
Konfiguration der ports.conf
Doch wie richtet man so etwas ein? Zuerst muss man die /etc/apache2/ports.conf dahingehend verändern das man folgendes einträgt:
NameVirtualHost *:80
Container für die Einstellungen erstellen
Als nächstes erstellt man in dem Verzeichnis /etc/apache2/sites-available/ seinen VirtualHost Container als Beispiel burrotinto.
nano /etc/apache2/sites-available/burrotinto
Als Grundgerüst kann das hier dienen:
ServerAdmin spam@burrotinto.de
ServerName http://www.burrotinto.de
ServerAlias *.burrotinto.de burrotinto.de
DocumentRoot /var/www/burrotinto/
Options FollowSymLinks
AllowOverride FileInfo
Options Indexes FollowSymLinks MultiViews
AllowOverride FileInfo
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<directory "/usr/lib/cgi-bin">
AllowOverride FileInfo
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Zur Erklärung:
ServerAdmin Email Adresse des Server Administrators
ServerName welcher Hostname im Host:-Header der Anfrage auftauchen muss, damit sie diesem virtuellen Host zugeordnet wird.
ServerAlias Die Direktive ServerAlias bestimmt die alternativen Namen eines Hosts. Wenn der Server unter mehr als einen Namen erreichbar sein wollen.
DocumentRoot Wo die Seite im root Baum liegen soll. Dieses Verzeichniss muss auch erstellt werden. Wie mit diesem Beispiel.
mkdir /var/www/burrotinto
Damit ist der erste VirtualHost fertig konfiguriert.
Einlesen des Containers
Aktiviert wird die Seite mit einem
a2ensite burrotinto
und so kann man beliebig viele Domains an seinen Server anschließen.
Deaktivieren eines Containers
manche behaupten ja das die 000-default Seite aktiv sein muss damit die VirtualHostfunktionieren. Aber bei mir nicht. Ich hab sie sogar deaktivieren müssen damit alles klappt.
a2dissite 000-default
Apache neustart und gut is
Jetzt noch Apache neustarten
/etc/init.d/apache force-reload
Das sollte es nun gewesen sein.
Bei Fragen, Anregungen und Verbesserungen hinterlasst bitte einen Kommentar.