- В настоящее время Nextcloud обслуживается по адресу
my-domain.dev/nextcloud
. - Я бы хотел, чтобы его подали в
cloud.my-domain.dev
. - Я уже настроил запись A,
cloud.my-domain.dev
указывающую на IP-адрес моего сервера. - Рядом с моим
/var/www/nextcloud
у меня также есть/var/www/my-domain.dev
мой основной сайт, который я настроил на использование HTTPS с помощью Let's-Encrypt. - Я использую версию сервера: Apache/2.4.41 (Ubuntu).
Теперь мне нужно настроить vhosts для совместной игры. Я предполагаю, что мне придется преобразовать nextcloud.conf, чтобы он находился в виртуальном хосте, возможно, под другим портом? Как мне поступить?
nextcloud.conf какрекомендовано 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>
мой-домен.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>
ЧТО МНЕ ПОДХОДИТ:
Ответ Эндрю Шульмана почти сработал для меня, мне просто пришлось внести несколько небольших изменений:
- Удалить «Требовать все предоставленные».
- Переместите «AllowOverride All» и «Options FollowSymLinks MultiViews» в тег каталога.
Может ли кто-нибудь объяснить, почему эти шаги были необходимы?
Спасибо, Эндрю!
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>
решение1
Вам просто нужно добавить новое определение VirtualHost вместо директив Alias и 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>
Оба виртуальных хоста могут работать на порту 80. Именно так работает виртуальный хостинг на основе имени — он позволяет запускать несколько хостов на одном IP-адресе и порту. Apache сопоставляет значение заголовка Host, которое отправляет клиент, с директивами ServerName и ServerAlias, чтобы определить, какой виртуальный хост обслуживать.
Вам следует прочитатьДокументация по виртуальному хосту Apache, особенно часть о виртуальных хостах на основе имени.