Movendo nextcloud para um bloco Apache VirtualHost para uso como subdomínio?

Movendo nextcloud para um bloco Apache VirtualHost para uso como subdomínio?
  • Nextcloud está sendo servido atualmente em my-domain.dev/nextcloud.
  • Eu gostaria que fosse servido às cloud.my-domain.dev.
  • Já configurei um registro A para cloud.my-domain.devapontar para o endereço IP dos meus servidores.
  • Ao lado do meu /var/www/nextcloud, também tenho um /var/www/my-domain.dev, meu site principal, que configurei para usar HTTPS usando Let's-Encrypt.
  • Estou usando a versão do servidor: Apache/2.4.41 (Ubuntu).

Agora preciso configurar os vhosts para jogarem juntos. Presumo que terei que converter o nextcloud.conf para ficar em um host virtual, talvez em uma porta diferente? Como eu prossigo?

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>

meu-domínio.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>

O QUE FUNCIONOU PARA MIM:

A resposta de Andrew Schulman quase funcionou para mim, só tive que fazer algumas pequenas alterações:

  • Remova "Exigir todos concedidos".
  • Mova "AllowOverride All" e "Options FollowSymLinks MultiViews" para uma tag de diretório.

Alguém poderia explicar por que essas etapas foram necessárias?

Obrigado André!

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>

Responder1

Você só precisa adicionar uma nova definição de VirtualHost, no lugar das diretivas Alias ​​e Directory:

<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 os hosts virtuais podem ser executados na porta 80. É assim que funciona a hospedagem virtual baseada em nome - ela permite executar vários hosts no mesmo endereço IP e porta. O Apache corresponde ao valor do cabeçalho Host que o cliente envia com relação às diretivas ServerName e ServerAlias, para determinar qual host virtual deve atendê-los.

Você deveria ler oDocumentação do Host Virtual Apache, especialmente a parte sobre hosts virtuais baseados em nomes.

informação relacionada