Ubuntu, apache2 comodín dns al subdominio

Ubuntu, apache2 comodín dns al subdominio

Actualmente tengo mi propio servidor (ubuntu) con los siguientes servicios: samba, ftp y un servidor web. Compré un dominio y vinculé el registro A de DNS a la IP de mi ISP. Esto está funcionando correctamente. Ahora me gustaría utilizar el registro comodín DNS para crear subdominios. Quiero evitar esperar 24 horas antes de que se complete el cambio de DNS.

Hasta ahora sólo puedo redirigirtodocomodines entrantes al mismo directorio:

test1.domain.com redirige a /var/www

test2.domain.com redirige a /var/www

Aunque me gustaría conseguir:

test1.domain.com redirige a /var/www/test1

test2.domain.com redirige a /var/www/test2

Supongo que sería cambiar el archivo /etc/apache2/sites-available/domain.

¡Cualquier ayuda o consejo será bienvenido!

Gracias,

Marca

EDITAR:

Así es como se ve mi archivo /etc/apache2/sites-available/domain:

<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>

Respuesta1

Debería poder obtener el comportamiento deseado con VirtualDocumentRoot.

Dentro de tu <VirtualHost>, agrega un ServerAliaspara capturar todos los dominios que te interesan:

    ServerAlias *.example.com

...luego asígnelos a los directorios deseados. Elimina tu DocumentRooty en su lugar, agrega:

    VirtualDocumentRoot /var/www/%1

Querrá tener un <Directory /var/www/>bloque que permita el acceso y tenga en cuenta que este vhost solo debe manejar el servicio para sus vhosts configurados dinámicamente; si desea example.comque www.example.comse manejen por separado, entonces querrá que tengan el suyo propio <VirtualHost>.

Editar:

Querrá utilizar un vhost diferente para manejar los dominios "base". Partiendo de la configuración actual en el comentario:

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>

Respuesta2

Gracias por ayudar a encontrar la respuesta. Aquí obtuve una solución para mi problema, creo que esto ayudará a otros principiantes como yo a encontrar una solución para el problema mencionado anteriormente.

Paso 1: configure su sitio web como se indica a continuación

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/su sitio

3) recarga del servicio sudo apache2

4) Instalar Dnsmasq: sudo apt-get install dnsmasq

5) abra /etc/NetworkManager/NetworkManager.conf y comente la línea que dice dns=dnsmasq. Reinicie NetworkManager después: sudo restart network-manager.

6)vi /etc/dnsmasq.conf y la línea listening-address=127.0.0.1.

7) Cree un nuevo archivo en /etc/dnsmasq.d, abra el archivo y edítelo de la siguiente manera

address=/yourdomain/127.0.0.1

8) Reinicie Dnsmasq: sudo /etc/init.d/dnsmasq reiniciar.

Esto también se puede hacer en nginx. y tenga en cuenta que esta solución ha funcionado para mí. Supongo que esto también funcionará para todos los demás.

información relacionada