サブドメインとして使用するために、nextcloud を Apache VirtualHost ブロックに移動しますか?

サブドメインとして使用するために、nextcloud を Apache VirtualHost ブロックに移動しますか?
  • Nextcloudは現在 で提供されていますmy-domain.dev/nextcloud
  • で提供していただきたいですcloud.my-domain.dev
  • cloud.my-domain.devサーバーの IP アドレスを指すA レコードをすでに設定しています。
  • 私の の横には、 Let's-Encrypt を使用して HTTPS を使用するように設定したメイン サイトで/var/www/nextcloudある もあります。/var/www/my-domain.dev
  • サーバーバージョン: 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>

my-domain.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

Alias および Directory ディレクティブの代わりに、新しい VirtualHost 定義を追加するだけです。

<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 仮想ホストのドキュメント特に、名前ベースの仮想ホストに関する部分です。

関連情報