Перемещение nextcloud в блок Apache VirtualHost для использования в качестве поддомена?
- Nextcloud в настоящее время обслуживается по адресу
my-domain.dev/nextcloud
. - Я бы хотел, чтобы его подали в .
- Я уже установил рекорд A для
cloud.my-domain.dev
чтобы указать IP-адрес моих серверов. - Сидя рядом с моим
/var/www/nextcloud
, у меня тоже есть/var/www/my-domain.dev
, мой основной сайт, который я настроил для использования HTTPS с помощью Let's-Encrypt. - Я использую версию сервера: Apache/2.4.41 (Ubuntu).
Теперь мне нужно настроить виртуальные хосты для совместной игры. Я предполагаю, что мне придется преобразовать 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 webmaster@b-t.dev
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 , особенно часть о виртуальных хостах на основе имен.