특정 URL에 대한 하나의 VirtualHost, Apache의 다른 모든 URL에 대한 또 다른 VirtualHost

특정 URL에 대한 하나의 VirtualHost, Apache의 다른 모든 URL에 대한 또 다른 VirtualHost

동일한 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반환 할 것입니다 .404foo/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을 구축하고 이를 처리하도록 할 수도 있습니다.

관련 정보