- 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.dev
apontar 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.