- Nextcloud se presta actualmente en
my-domain.dev/nextcloud
. - Me gustaría que me lo sirvieran
cloud.my-domain.dev
. - Ya configuré un registro A para
cloud.my-domain.dev
que apunte a la dirección IP de mis servidores. - Sentado junto a mi
/var/www/nextcloud
, también tengo/var/www/my-domain.dev
mi sitio principal, que configuré para usar HTTPS usando Let's-Encrypt. - Estoy usando la versión del servidor: Apache/2.4.41 (Ubuntu).
Ahora necesito configurar los vhosts para que jueguen juntos. Supongo que tendré que convertir nextcloud.conf para que se encuentre dentro de un host virtual, ¿tal vez en un puerto diferente? ¿Cómo procedo?
nextcloud.conf comorecomendado por nextcloud.
Alias /nextcloud "/var/www/nextcloud/"
<Directory /var/www/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>
mi-dominio.dev.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName my-domain.dev
ServerAlias www.my-domain.dev
DocumentRoot /var/www/my-domain.dev
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
LO QUE FUNCIONÓ PARA MÍ:
La respuesta de Andrew Schulman casi funcionó para mí, solo tuve que hacer algunos pequeños cambios:
- Eliminar "Requerir todo concedido".
- Mueva "AllowOverride All" y "Options FollowSymLinks MultiViews" a una etiqueta de directorio.
¿Alguien podría explicar por qué fueron necesarios estos pasos?
Gracias Andrés!
nextcloud.conf:
1 <VirtualHost *:80>
2 ServerAdmin [email protected]
3 ServerName cloud.b-t.dev
4 DocumentRoot /var/www/nextcloud
5
6 #ErrorLog ${APACHE_LOG_DIR}/error.log
7 #CustomLog ${APACHE_LOG_DIR}/access.log combined
8
9 <Directory "/var/www/nextcloud">
10 AllowOverride All
11 Options FollowSymLinks MultiViews
12 </Directory>
13
14 #Satisfy Any
15
16 <IfModule mod_dav.c>
17 Dav off
18 </IfModule>
19
20 SetEnv HOME /var/www/nextcloud
21 SetEnv HTTP_HOME /var/www/nextcloud
22 </VirtualHost>
Respuesta1
Sólo necesita agregar una nueva definición de VirtualHost, en lugar de las directivas Alias y Directorio:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName cloud.my-domain.dev
DocumentRoot /var/www/nextcloud
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</VirtualHost>
Ambos hosts virtuales pueden ejecutarse en el puerto 80. Así es como funciona el hosting virtual basado en nombres: le permite ejecutar múltiples hosts en la misma dirección IP y puerto. Apache compara el valor del encabezado Host que envía el cliente con las directivas ServerName y ServerAlias, para determinar qué host virtual les servirá.
Deberías leer elDocumentación del servidor virtual Apache, especialmente la parte sobre hosts virtuales basados en nombres.