하위 도메인으로 사용하기 위해 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로넥스트클라우드가 추천하는.

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

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는 클라이언트가 ServerName 및 ServerAlias ​​지시문에 대해 보내는 Host 헤더 값을 일치시켜 서비스를 제공할 가상 호스트를 결정합니다.

당신은 읽어야합니다Apache 가상 호스트 문서, 특히 이름 기반 가상 호스트에 관한 부분입니다.

관련 정보