- 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由 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>
您只需要添加一个新的 VirtualHost 定义来代替 Alias 和 Directory 指令:
两个虚拟主机都可以在端口 80 上运行。这就是基于名称的虚拟主机的工作方式——它允许您在相同的 IP 地址和端口上运行多个主机。Apache 将客户端发送的 Host 标头的值与 ServerName 和 ServerAlias 指令相匹配,以确定为它们提供服务的虚拟主机。
您应该阅读Apache Virtual Host 文档,尤其是关于基于名称的虚拟主机的部分。