동일한 IP 주소, 동일한 포트를 수신하는 다른 가상 호스트를 갖도록 Apache를 구성하여 특정 경로(전체 도메인이 아니라 로컬 경로만)가 하나의 가상 호스트로 연결되고 다른 경로는 기본적으로 다른 경로로 연결되도록 구성할 수 있습니까? ?
예를 들어:
#All requests to www.mysite.com/special-url go here
<VirtualHost /special-url:80>
DefaultType application/x-httpd-php
ServerName server1
Document Root "/home/me/server1"
<Directory "/home/me/server1">
AllowOverride None
Order allow, deny
allow from all
</Directory>
</VirtualHost>
#All other requests go here
<VirtualHost *:80>
DefaultType application/x-httpd-php
ServerName server1
Document Root "/home/me/server2"
<Directory "/home/me/server2">
AllowOverride None
Order allow, deny
allow from all
</Directory>
</VirtualHost>
이 서버 구성은 작동하지 않으며 첫 번째 VirtualHost
태그(예 VirtualHost */special-url:80
: )에 와일드카드 조합을 추가하지도 않습니다. 대신, 이것을 실행하면 Apache는 요청 /special-url
을 /home/me/server1
. 그러나 내가 검색하면 in 이라는 디렉토리가 있더라도 /foo
여전히 in을 찾아서 server1
반환 할 것입니다 .404
foo
/home/me/server2
특정 URL에 대해서만 하나의 VirtualHost를 갖고 다른 모든 URL에 대해 또 다른 VirtualHost를 가질 수 있는 방법이 있습니까?
답변1
그것은 작동 방식이 아닙니다. 가상 호스트는 경로가 아닌 IP 주소나 호스트 이름을 기반으로 합니다. 그러나 동일한 목표를 달성하기 위해 수행할 수 있는 몇 가지 다른 작업이 있습니다.
- 가상 호스트에 별도의 호스트 이름이 있는 경우
server1
리디렉션이 있을 수 있습니다. - 원하는 것이 해당 URL에 대해 다른 경로의 콘텐츠를 제공하는 것뿐이라면 를 사용하여
AliasMatch
해당 경로를 매핑 할 수 있습니다. mod_rewrite
사양에 따라 URL을 다시 작성하는 데 사용할 수 있습니다.
정확히 무엇을 달성하고 싶은지 더 많이 알지 못하면 그보다 더 구체적으로 말할 수 없습니다. 하지만 나는 믿는다URL을 파일 시스템에 매핑하는 방법에 대한 Apache 문서당신에게 좋은 출발점이 될 것입니다.
답변2
Apache의 프록시 모듈에 대한 작업이 될 수 있을 것 같습니다.
ProxyPass 지시문을 확인하세요.
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass
답변3
가상 호스트는 동일한 서버에서 여러 도메인을 호스팅할 수 있도록 요청의 도메인 부분을 처리하기 위한 것입니다.
별칭을 사용하거나 다시 작성하여 작업을 수행할 수도 있습니다. 또는 앱에 다른 URL을 구축하고 이를 처리하도록 할 수도 있습니다.