Ubuntu, Apache2-Wildcard-DNS zur Subdomäne

Ubuntu, Apache2-Wildcard-DNS zur Subdomäne

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, ServerAliasum alle Domänen abzudecken, die Sie interessieren:

    ServerAlias *.example.com

... und ordnen Sie sie dann den gewünschten Verzeichnissen zu. Entfernen Sie Ihr DocumentRootund 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.comund www.example.comseparat 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.

verwandte Informationen