하나의 동일한 서버를 참조하는 여러 도메인이 있습니다. 이제 각 도메인에 대해 Vhost를 만들고 싶습니다. 이는 일부 도메인에서는 이미 작동하지만 모든 도메인에서는 작동하지 않습니다.
예: "b.com" 도메인으로 이동하여 "a.com"에 대해 표시되어야 하는 웹사이트를 가져옵니다. 그러나 "a.com"을 사용하면 모든 것이 작동합니다. "b.com"의 요청은 "a.com"의 로그에도 저장되며 거기에는 내가 "a.com"으로 이동했음을 나타냅니다.
DNS 관리는 Cloudflare에 있습니다. 각 도메인에는 도메인 이름이 포함된 TXT 레코드가 있습니다.
도와주세요?
구성을 최소한으로 최소화했습니다. 그래서 2개의 파일이 있습니다.
첫 번째 구성:
<VirtualHost a.com:80>
Servername a.com
DocumentRoot /var/www/a.com
</VirtualHost>
두 번째 구성:
<VirtualHost b.com:80>
Servername b.com
DocumentRoot /var/www/b.com
</VirtualHost>
미리 감사드립니다!
답변1
매개변수는 <VirtualHost ...>
웹 서버에로컬 IP 주소바인딩합니다. 이름을 지정하더라도 IP 주소를 확인하는 데에만 사용됩니다. (예를 들어 서버에 IP 주소가 많고 각 도메인에 전용 IP 주소가 있는 경우에 사용됩니다.)
대부분의 가상호스트는 주소 기반이 아닌 이름 기반이므로 이 매개변수는 쓸모가 없으며 *
대신 와일드카드 주소를 지정해야 합니다. 대신, Apache 웹서버는 가상호스트를 해당 매개변수로 구별 ServerName
합니다 ServerAlias
.
표준이름 기반 가상 호스트구성은 다음과 같습니다.
<VirtualHost *:80>
ServerName a.example.tld
DocumentRoot /var/www/a
</VirtualHost>
<VirtualHost *:443>
ServerName a.example.tld
DocumentRoot /var/www/a
SSLEngine On
SSLCertificateFile [...]
</VirtualHost>
---
<VirtualHost *:80>
ServerName b.example.tld
DocumentRoot /var/www/b
</VirtualHost>
<VirtualHost *:443>
ServerName b.example.tld
DocumentRoot /var/www/b
SSLEngine On
SSLCertificateFile [...]
</VirtualHost>
서버가 HTTP와 HTTPS를 모두 제공해야 하는 경우에도 각 포트(:80 및 :443)에 대해 가상 호스트를 정의해야 합니다. 이것이 필요한지 여부는 Cloudflare 구성에 따라 다릅니다.
당신이 사용하는 경우오래된v2.2 이하와 같은 Apache 버전에는 다음 옵션이 추가로 필요합니다(v2.4 이상에서는 더 이상 존재하지 않습니다).
NameVirtualHost *:80
NameVirtualHost *:443