2013-05-13 4 views
0

OS : CentOS는 6.3 최종 나는 MySQL과 아파치 (아파치) 패키지를 설치하고 아래와 같이 /etc/httpd/conf/httpd.conf 파일의 설정을 변경했습니다 DocumentRoot가 virtualHost의 docRoot로 설정되어 있습니까?

:

<VirtualHost *:80> 
    DocumentRoot /var/www/html/wordpress/ 
    ServerName www.asterix.int 
</VirtualHost> 
<VirtualHost *:80> 
    DocumentRoot /var/www/html/staticSite/ 
    ServerName www.meins.lan 
    ServerAlias www.deins.lan 
    ServerAlias www.obelix.int 
</VirtualHost> 
<VirtualHost *:80> 
    DocumentRoot /var/www/html/joomla/ 
    ServerName www.example.com 
    ServerAlias www2.example.com 
    ServerAlias www3.example.com 
</VirtualHost> 

모든 ServerName과 ServerAlias는 정상적으로 작동하며 3 페이지를 액세스 할 수 있습니다.

하지만 서버의 IP를 통해 페이지에 액세스하려고 할 때 이상한 점이 있습니다 (적어도 나를 위해). apache2는 첫 번째 정의 된 virtualHost (이 예제에서는 wordpress)의 인덱스 페이지를 리턴한다. 나는 3 개의 virtualHosts 모두와 이것을 시도하고 동일한 결과를 얻을.

정상적인 동작입니까, 아니면 잘못된 동작입니까?

정상적인 동작 인 경우 : DocumentRoot를 모든 요청에 ​​대해 독점적으로 ip로 설정할 수 있습니까?

Thx!

답변

0

이것은 의도 한 동작입니다. IP를 사용하는 경우 (예 : http://123.123.123.123/) Apache는 HTTP로 호스트 이름으로 123.123.123.123을 사용합니다. ServerName 또는 ServerAlias123.123.123.123 인 VirtualHost가 없으므로 첫 번째 VirtualHost가 사용됩니다.

당신이 단순히으로 가상 호스트를 만들 수 있습니다 http://123.123.123.123/ 만 수신 VirtualHost 항목 원하는 그래서 경우 :

<VirtualHost *:80> 
    DocumentRoot /var/www/html/my-ip-site/ 
    ServerName 123.123.123.123 
</VirtualHost> 
+0

에 의해 아파치에서 설정 한 버추얼 호스트를 확인할 수 있습니다. html/- 주최자가 사라짐) 처음에 당신과 같은 항목을 추가했습니다. 이 VirtualHost의 DocumentRoot는 글로벌 DocumentRoot와 동일한 값을 가지며 서버의 IP를 탐색하면 현재 잘 작동합니다. 너 너야. – SaintCore

0

이것은 정상적인 동작입니다. 이름 기반 가상 호스트라는 가상 호스트 방법을 사용하고 있습니다. 그것이 상상할 수 있듯이 아파치의 "라우팅"은 설정의 ServerName과 ServerAlias ​​지시어에 따라 HTTP 요청의 호스트 명에 의해서만 이루어진다.

서버의 IP 요청 (예 : 1.2.3.4 - 정의 된 vhost 중 하나로 라우팅 할 수 없으며, apache는 기본 가상 호스트를 사용합니다. 기본 가상 호스트는 정의 된 첫 번째 가상 호스트입니다. 와일드 카드 정의 * : 80을 사용했기 때문에 IP에 대한 요청이 받아 들여집니다.

당신은 내가 단지에 대한 문서의 항목 (httpd.apache.org/docs/2.2/en/vhosts/name-based을 발견 한 아파치

# command apache2 -S