將 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我的主站點,我已將其設定為使用 Let's-Encrypt 使用 HTTPS。
  • 我使用的伺服器版本:Apache/2.4.41 (Ubuntu)。

現在我需要設定虛擬主機才能一起玩。我假設我必須將 nextcloud.conf 轉換為位於虛擬主機中,也許位於不同的連接埠下?我該如何繼續?

nextcloud.conf 為下一個雲端推薦

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 上運行。 Apache 將用戶端根據 ServerName 和 ServerAlias 指令發送的 Host 標頭的值進行匹配,以確定為它們提供服務的虛擬主機。

您應該閱讀Apache 虛擬主機文檔,特別是關於基於名稱的虛擬主機的部分。

相關內容