Перемещение 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 , особенно часть о виртуальных хостах на основе имен.

Другие вопросы по тегам