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 ServerAlias
para capturar todos los dominios que te interesan:
ServerAlias *.example.com
...luego asígnelos a los directorios deseados. Elimina tu DocumentRoot
y 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.com
que www.example.com
se 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.