VirtualHost가 가장 일치하는 항목으로 간주되지 않습니다.

VirtualHost가 가장 일치하는 항목으로 간주되지 않습니다.

라는 파일이 있습니다pga-default.conf다음과 같습니다.

<VirtualHost *:8008>
    ServerName 192.168.1.10

    DocumentRoot /var/www/portals/default/public

    <Directory "/var/www/portals/default/public">
       AllowOverride All
    </Directory>
    ErrorLog /var/log/httpd/default.error.log
    CustomLog /var/log/httpd/default.requests.log combined
</VirtualHost>

문제는 내가 시도할 때마다http://192.168.1.10:8008항상 기본 Apache 테스트 페이지를 로드합니다. default.conf처럼 보인다,

Listen 8008
<VirtualHost _default_:8008>
    DocumentRoot "/www/default"
</VirtualHost>

<VirtualHost *:8008>하지만 내가 in <VirtualHost 192.168.1.10:8008>으로 바꾸면pga-default.conf예상대로 작동합니다. 왜 이런지 알고 싶습니다. 내가 아는 한, 이는 서버가 특정 IP 주소 및 포트에 가장 적합한 것으로 VirtualHost를 선택하지 않기 때문입니다. (이 답변은VirtualHost 컨텍스트에서 _default_:*와 *:*의 차이점)

다른 방법도 몇 가지 시도해 보았지만 위에서 언급한 방법 외에는 아무 효과가 없었습니다. 다음은 다른 방법입니다. (변경사항:pga-default.conf)

  • ServerName 192.168.1.10로 변경ServerName 192.168.1.10:8008
  • 사용된ServerAlias 192.168.1.10

메모- 위의 구성으로 <VirtualHost *:8008>내 동료 중 일부는 성공적인 결과를 얻었습니다. 이 문제는 나에게만 발생했습니다.

내가 여기서 무엇을 놓쳤습니까? 왜 다른 사람들은 예상한 결과를 얻었는데 나는 그렇지 않습니까?

답변1

각 가상 호스트에서는 항상 ServerName을 정의해야 합니다.

아마도 "기본값"이 먼저 로드되고 특정 서버 이름이 정의되어 있지 않기 때문에 모든 요청을 포착합니다. 기본 가상 호스트에서 "ServerName 기본값"을 설정하면 쉽게 시도해 볼 수 있습니다.

그래서 당신이 요청하면 "http://192.168.1.10:8008" 이제 적절한 가상 호스트에 접속하게 됩니다.

따라서 가장 좋은 방법은 항상 각각의 모든 가상 호스트에 고유한 ServerName 지시문을 정의하는 것입니다. 요청한 호스트 이름이 정의된 가상 호스트와 일치하지 않을 때 첫 번째 가상 호스트가 요청을 받을 것이며, 실수로 두 개의 가상 호스트에서 동일한 서버 이름을 먼저 정의하는 경우에도 고려하는 것입니다. 로드된 가상 호스트가 요청을 받습니다.

관련 정보