¿Mover nextcloud a un bloque Apache VirtualHost para usarlo como subdominio?

¿Mover nextcloud a un bloque Apache VirtualHost para usarlo como subdominio?
  • 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.devque apunte a la dirección IP de mis servidores.
  • Sentado junto a mi /var/www/nextcloud, también tengo /var/www/my-domain.devmi 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.

información relacionada