将 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 作为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>

对我有用的方法:

安德鲁·舒尔曼(Andrew Schulman)的回答几乎对我有用,我只需要做一些小的改动:

  • 删除“要求全部授予”。
  • 将“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 虚拟主机文档,尤其是关于基于名称的虚拟主机的部分。

相关内容