- 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 虛擬主機文檔,特別是關於基於名稱的虛擬主機的部分。