Перемещаете nextcloud в блок Apache VirtualHost для использования в качестве поддомена?

Перемещаете nextcloud в блок Apache VirtualHost для использования в качестве поддомена?
  • В настоящее время 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, особенно часть о виртуальных хостах на основе имени.

Связанный контент