2012-12-15 1 views
2

테스트 서버를 설정하려는 노력에도 불구하고 간단한 것을 놓친다면 용서해주십시오. 아직 아파치 설정 전문가가 아니기 때문에 용서해주십시오. code.domain.com 다른 포트로, 동일한 시스템에 다른 서버 에 의해 처리되어야에 대한 /var/www/html/subdomain 아파치 : 정상적인 가상 호스트를위한 하나의 서브 도메인, 두 번째 가상 호스트의 다른 호스트

  • 요청에서 제공되어야한다 subdomain.domain.com에 대한

    1. 요청 :

      배경

      나는 두 가지 요구 사항이. code은 첫 번째 요구 사항과 동일한 규칙에 따라 처리하면 안되는 고정 하위 도메인입니다. 다시 말해서 mysite.domain.com/var/www/html/mysite에서 제공되어야하고 xyz.domain.com/var/www/html/xyz에서 제공되어야하지만 BUT code.domain.com은 완전히 다르게 처리되어야합니다.

    것들 # 1을 수행하려면

    을 시도, 나는 VirtualDocumentRoot /var/www/html/%1를 사용합니다. # 2의 경우 code 하위 도메인 만 ProxyPassProxyPassReverse을 사용하여 포트 5000에서 동일한 시스템의 다른 서버로 트래픽을 리디렉션하는 완전히 다른 구성을 사용하기 바란다.

    결과

    모든 요청에 ​​사용되는 하위 도메인 code이없는 경우에도 첫 번째 <VirtualHost> 용기에 따라 프록시 지시를 통해 리디렉션됩니다.

    code vhost가 구성에서 처음이지만 클라이언트가 요청한 ServerName이 code.domain.com이 아니기 때문에 하위 도메인이 code이 아닌 경우에는 vhost를 사용하면 안됩니다.

    질문

    어떻게 특정 하위 도메인이 하나 개의 가상 호스트를 사용하도록 다른 하위 도메인이 다른 가상 호스트를 사용하는 동안 나는이 두 가지 구성을 조정할 수 있습니다? 문제를 풀기가하려면

    구성

    <VirtualHost *:80> 
        ServerName code.domain.com 
        ServerAlias code.local 
        ServerAdmin [email protected] 
        DocumentRoot /var/www/repos 
        ErrorLog logs/code.domain.com 
        CustomLog logs/code-access common 
        ProxyPass/http://localhost:5000/ 
        ProxyPassReverse/http://localhost:5000/ 
        <Directory "/var/www/repos"> 
         DAV On 
         Options +Indexes +FollowSymLinks 
         AllowOverride All 
         Allow from all 
         Order allow, deny 
        </Directory> 
    </VirtualHost> 
    
    <VirtualHost *:80> 
        UseCanonicalName Off 
        VirtualDocumentRoot /var/www/html/%1 
        VirtualScriptAlias /var/www/html/%1/cgi-bin 
        LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon 
        CustomLog logs/access_log vcommon 
        ServerName domain.com 
        ServerAlias localhost 
        ServerAdmin [email protected] 
    </VirtualHost> 
    
  • +0

    왜 코드 하위 도메인이 다른 IP를 가리 키지 않습니까? – rekire

    +0

    입력 해 주셔서 감사합니다. 하나의 상자와 NIC 만 있으면 작업 할 수 있습니까? 다른 서버가 동일한 시스템에서 실행 중임을 상기하십시오. –

    답변

    0

    나를 위해 아름답게 작동하는 구성을 발견했습니다. 나는 전체 가상 호스트 구성을 삭제하고 그것을 대체 : 필요에 따라

    <VirtualHost *:80> 
        ServerAdmin [email protected] 
        VirtualDocumentRoot /var/www/html/%-3+ 
        ServerName domain.com 
        ServerAlias localhost 
        CustomLog logs/domain.com-access "%V -> %[email protected]%h (%t): %Bb %Dmu" 
        ErrorLog logs/error_log 
    </VirtualHost> 
    

    이 /var/www/html/code/.htaccess에서, 나는 프록시 mod_rewrite를 내 트래픽을 P 플래그를 사용합니다.

    <IfModule mod_rewrite.c> 
        RewriteEngine On 
        RewriteRule ^(.*)$ http://localhost:5000/$1 [L,P] 
    </IfModule> 
    

    VirtualDocumentRoot에서 %-3+의 사용은 내 URL에서 I can also use more than one dot이 이름에 점이있는 디렉토리에 액세스 할 수 있다는 것을 의미한다. 예를 들어, anothersite.com의 테스트 서버는 anothersite.com.domain.com으로 액세스 할 수 있으며 파일은 /var/www/html/anothersite.com에서 제공됩니다. 와일드 카드 CNAME 레코드와

    1. 이 유일한 작품 :

      두 어획량이 있습니다.

    2. www.domain.comdomain.com 요청이 다르게 동작합니다.
    0

    너무 열심히해서는 안됩니다.

    두 가상 호스트를 먼저 교환하십시오. 첫 번째 것은 매번 기본 시간입니다. 따라서 규칙이 일치하지 않으면 모든 호출이이 가상 호스트로 처리됩니다.

    둘째, mod 재 작성을 통해 올바른 디렉토리로 요청을 이동하거나 모든 유효한 도메인에 대한 가상 호스트를 생성하십시오. 마지막 파일은 훨씬 간단하고 별도의 로그 파일을 가질 수 있습니다.

    +0

    두 번째 가상 호스트를 기본값으로 사용한다고 가정하면 ProxyPass를 사용하여 .htaccess의 다른 포트로 트래픽을 보낼 수 있습니까? –

    +0

    내가해야 할 일을 놓치지 않았다면. Tty 문제가 생기면 컴퓨터에있을 때 도와 드리겠습니다. 모바일에 서버 구성을 작성하는 것은 어렵습니다. – rekire

    관련 문제