아파치2 멀티도메인 질문입니다.
본문
일반적으로
가상호스트(443) 설정에서
AAA.com 은 디렉토리 AAA에 연결을 하였고,
BBB.com 은 디렉토리 AAA<BBB (위에AAA하부폴더)에 연결하려 합니다.
그런데 AAA.com 과 BBB.com 의 conf 파일은 한개로 쓸려고 합니다.
AAA.com 은 일반 웹사이트로 운영을 할계획이고,
BBB.com/CCC.com/DDD.com/EEE.com~ ZZZ.com 등등 도메인은 BBB폴더에 연결해서
AAA.com 을 아이프레임으로 불러올 계획입니다.
그리고 AAA/BBB 밑 하부폴더들도 접근이 가능해야 합니다..
- x프레임은 해제했습니다.
- 퍼미션 에러가 발생하는데 퍼미션은 문제가 없는걸로 보입니다. 전부 root 로 잡아서 테스트했습니다.
- 현재 설정된conf 파일입니다.
<VirtualHost *:443>
ServerName AAA.com
ServerAlias www.AAA.com BBB.com CCC.com DDD.com
DocumentRoot /AAA/
<Directory /AAA/>
Options FollowSymLinks MultiViews
AllowOverride All
require all granted
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName BBB.com
ServerAlias www.BBB.com
DocumentRoot /AAA/BBB/
<Directory /AAA/BBB/>
Options FollowSymLinks MultiViews
AllowOverride All
require all granted
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName CCC.com
ServerAlias www.CCC.com
DocumentRoot /AAA/CCC/
<Directory /AAA/CCC/>
Options FollowSymLinks MultiViews
AllowOverride All
require all granted
</Directory>
</VirtualHost>
설정이 어떻게 되야 하는지 아파치2 고수님이 계시면 팁좀 주실수있을까요?
!-->답변 3
아파치 웹 서버에서 여러 도메인을 하나의 VirtualHost
설정에 통합하고 싶으신 경우, 설정을 조금 조정해야 합니다. 설명하신 바에 따르면 AAA.com
은 기본 디렉토리 /AAA/
에 연결되며, BBB.com
, CCC.com
, DDD.com
등은 /AAA/BBB/
, /AAA/CCC/
등 각각의 하위 디렉토리에 연결되기를 원합니다. 각 도메인이 서로 다른 콘텐츠를 제공하면서도 같은 VirtualHost 설정을 공유하길 원하시는 것으로 보입니다.
현재 제공하신 설정에서는 각 도메인에 대해 별도의 VirtualHost를 구성하고 있습니다. 하나의 VirtualHost로 이를 통합하고 싶다면, 다음과 같은 방법을 고려할 수 있습니다:
URL 리라이트를 사용한 방법
이 방법은 모든 도메인을 하나의 VirtualHost
로 처리하되, 요청된 호스트 이름에 따라 다른 디렉토리로 내부적으로 리다이렉트하는 방법입니다.
-
모듈 활성화
- 먼저,
mod_rewrite
모듈이 활성화되어 있는지 확인합니다. 이는 URL을 조건에 따라 다시 작성하는 데 사용됩니다.
- 먼저,
-
하나의 VirtualHost 설정
- 모든 요청을 처리할 수 있도록 하나의 VirtualHost 블록 내에서 조건에 따라 다르게 처리합니다.
<VirtualHost *:443>
ServerName AAA.com
ServerAlias www.AAA.com BBB.com CCC.com DDD.com EEE.com ZZZ.com
DocumentRoot /AAA/
<Directory /AAA/>
Options FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(?:www\.)?(BBB|CCC|DDD|EEE|ZZZ)\.com$
RewriteRule ^(.*)$ /AAA/%1/$1 [L]
</VirtualHost>
이 설정은 BBB.com
, CCC.com
등의 도메인에 대한 요청이 들어왔을 때, URL을 /AAA/BBB/
, /AAA/CCC/
등으로 내부적으로 리라이트합니다. %1
은 RewriteCond
에서 정규 표현식에 의해 캡처된 그룹(여기서는 도메인의 첫 부분, 예: BBB
, CCC
등)을 참조합니다.
주의사항
- 테스트 중요: 이러한 설정을 적용하기 전에는 반드시 테스트 환경에서 확인해 보세요.
- 모듈 활성화 확인:
mod_rewrite
가 활성화되어 있지 않다면, Apache 설정에서 활성화해야 합니다. - 보안 설정: 각 디렉토리에 대한 접근 제어를 적절히 설정하고,
.htaccess
파일을 통해 추가적인 보안 조치를 고려해야 합니다.
이 설정을 통해 여러 도메인에 대한 요청을 하나의 VirtualHost 설정으로 효율적으로 관리할 수 있습니다. 설정 후 Apache를 재시작하는 것을 잊지 마세요!
-----
With ChatGPT
!-->네 글쵸 ㅎㅎ
몇번 설정해보고 오류 메시지나 현상을 GPT 한테 물어보면 두세번 정도면 답이 찾아 지더라구요^^
자문자답으로 해결 하였습니다.