Derzeit hoste ich meinen eigenen (Ubuntu-)Server mit den folgenden Diensten: Samba, FTP und einen Webserver. Ich habe eine Domain gekauft und den DNS-A-Eintrag mit der IP meines ISPs verknüpft. Das funktioniert einwandfrei. Jetzt möchte ich den DNS-Wildcard-Eintrag verwenden, um Subdomains zu erstellen. Ich möchte vermeiden, 24 Stunden warten zu müssen, bis die DNS-Änderung abgeschlossen ist.
Bisher kann ich nur umleitenalleeingehende Platzhalter in dasselbe Verzeichnis:
test1.domain.com leitet zu /var/www weiter.
test2.domain.com leitet zu /var/www weiter.
Obwohl ich gerne hätte:
test1.domain.com leitet zu /var/www/test1 weiter.
test2.domain.com leitet zu /var/www/test2 weiter.
Ich würde vermuten, dass die Datei /etc/apache2/sites-available/domain geändert werden muss.
Jede Hilfe und jeder Tipp ist willkommen!
Danke,
Markieren
BEARBEITEN:
So sieht meine Datei /etc/apache2/sites-available/domain aus:
<VirtualHost *:80>
ServerAdmin webmaster@domain
DocumentRoot /var/www/webroot
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/webroot>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
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
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Antwort1
Sie sollten in der Lage sein, das gewünschte Verhalten mit zu erzielen VirtualDocumentRoot
.
Fügen Sie innerhalb Ihres <VirtualHost>
ein hinzu, ServerAlias
um alle Domänen abzudecken, die Sie interessieren:
ServerAlias *.example.com
... und ordnen Sie sie dann den gewünschten Verzeichnissen zu. Entfernen Sie Ihr DocumentRoot
und fügen Sie an seiner Stelle Folgendes hinzu:
VirtualDocumentRoot /var/www/%1
Sie möchten einen <Directory /var/www/>
Block haben, der den Zugriff ermöglicht, und bedenken Sie, dass dieser virtuelle Host nur den Dienst für Ihre dynamisch konfigurierten virtuellen Hosts handhaben sollte. Wenn Sie möchten, dass example.com
und www.example.com
separat behandelt werden, müssen Sie ihnen ihre eigenen zuweisen <VirtualHost>
.
Bearbeiten:
Sie sollten einen anderen virtuellen Host verwenden, um die „Basis“-Domänen zu verwalten. Aufbauend auf der aktuellen Konfiguration im Kommentar:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName catchall.example.com
ServerAlias *.example.com
# NOTE: this config will map test1.example.com to /var/www/test1
VirtualDocumentRoot /var/www/%1
# If you want that to map instead to /var/www/test1.example.com, then use %0:
# VirtualDocumentRoot /var/www/%0
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Order Allow,Deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
# This next vhost should be in a different file in sites-available to
# fit with debian-style vhosts - but make sure it's alphabetically
# after the file that contains the first vhost - we want it to load first
# so that it's default. It can also just go in the same file.
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/www.example.com
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Order Allow,Deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Antwort2
Vielen Dank für Ihre Hilfe bei der Suche nach der Antwort. Hier habe ich eine Lösung für mein Problem gefunden. Ich denke, dies wird anderen Anfängern wie mir helfen, eine Lösung für das oben genannte Problem zu finden.
Schritt 1: Konfigurieren Sie Ihre Website wie unten angegeben
vi /etc/apache2/sites-available/yoursite
<VirtualHost *:80> ServerAlias localhost *.yoursite #wildcard catch all VirtualDocumentRoot /path/to/your/workspace/%1/public UseCanonicalName Off <Directory "path/to/your/workspace"> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
2)sudo a2ensite /etc/apache2/sites-available/IhreSite
3) sudo service apache2 reload
4) Installieren Sie Dnsmasq: sudo apt-get install dnsmasq
5) Öffnen Sie /etc/NetworkManager/NetworkManager.conf und kommentieren Sie die Zeile dns=dnsmasq aus. Starten Sie NetworkManager anschließend neu: sudo restart network-manager.
6)vi /etc/dnsmasq.conf und die Zeile listen-address=127.0.0.1.
7)Erstellen Sie eine neue Datei in /etc/dnsmasq.d, öffnen Sie die Datei und bearbeiten Sie sie wie folgt
address=/yourdomain/127.0.0.1
8) Starten Sie Dnsmasq neu: sudo /etc/init.d/dnsmasq restart.
Dies kann auch in Nginx erfolgen. und bitte beachten Sie, dass diese Lösung bei mir funktioniert hat. Ich denke, dass sie auch bei allen anderen funktionieren wird.