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