Apache Vhost가 작동하지 않습니다

Apache Vhost가 작동하지 않습니다

하나의 동일한 서버를 참조하는 여러 도메인이 있습니다. 이제 각 도메인에 대해 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

관련 정보