2009-07-27 4 views
8

에 (역방향 프록시와) 와일드 카드 하위 도메인을 설정 : 내가 같은 다양한 하위 도메인을 갖고 싶어 abc.domain.com URL로 리다이렉트 등 www.domain.com/something?subdomain=abc는 무엇을 달성하려고하면 다음과 같다 아파치 2.2.3

정규화 된 도메인으로 리디렉션 할 때 브라우저의 URL 변경을 피하기 위해 역방향 프록시를 사용해야했습니다.

이 내 DNS 설정

*.domain.com. 14400 A 111.111.11.1 

이 아파치 내 가상 호스트 구성이다합니다 ([P] 플래그를 사용하고 mod_proxy를 모듈 켜고 다른 모듈)

<VirtualHost 111.111.11.1:80> 
    ServerName www.domain.com 
    ServerAlias *.lionite.com 
    DocumentRoot /var/www/html 
    ErrorLog /var/www/logs 
    UseCanonicalName off 

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/images 
RewriteCond %{HTTP_HOST}  !^www\.domain\.com$ 
RewriteRule ^(.+)  %{HTTP_HOST}$1   [C] 
RewriteRule ^([^.]+)\.domain\.com(.*) http://www.domain.com/something?subdomain=$1 [P,L] 

이 설정은 잘 작동합니다 (개선 할 수 있다고 생각한다면 알려주세요). 당연하지). 내가 설정 HTTPS에 노력하고 때

내 주요 문제는 : //

이 아파치

<VirtualHost 111.111.11.1:443> 
ServerName www.domain.com:443 
ServerAlias *.domain.com 
DocumentRoot /var/www/html 

SSLEngine on 
SSLProtocol all -SSLv2 
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW 
SSLCertificateFile /etc/httpd/conf.d/cert/server.crt 
SSLCertificateKeyFile /etc/httpd/conf.d/cert/server.key 

<Directory "/var/www/cgi-bin"> 
    SSLOptions +StdEnvVars 
</Directory> 

SetEnvIf User-Agent ".*MSIE.*" \ 
     nokeepalive ssl-unclean-shutdown \ 
     downgrade-1.0 force-response-1.0 

CustomLog logs/ssl_request_log \ 
      "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" 

    RewriteEngine on 
    RewriteCond %{REQUEST_URI} !^/images 
    RewriteCond %{HTTPS_HOST}  !^www\.domain\.com$ 
    RewriteRule ^(.+)  %{HTTPS_HOST}$1   [C] 
    RewriteRule ^([^.]+)\.domain\.com(.*) https://www.domain.com/something?subdomain=$1 [P,L] 

</VirtualHost> 

내가 https://abc.domain.com 전화 할 때마다 내 가상 호스트 구성입니다 - 나는 점점 오전 응답입니다 홈페이지에서 하위 도메인의 끝에 추가 할 내용이 무엇이든지 상관없이 동일한 응답을 받게됩니다. 재 작성이 잘 응답하지 않는 것과 같습니다.

어떤 도움

는 평가, 또는 당신은 당신이 설정했던 리버스 프록시 방법을 공유 할 수 있다면, 와일드 카드 하위 도메인과 모두 함께 나뿐만 아니라이 같은 문제가 있었다

+0

이 질문은 serverfault.com에 더 적합 할 것입니다 –

+0

나는이 질문을 serverfault.com에 올렸습니다. 응답을받지 못하고 여기에 게시하기로 결정했습니다. –

답변

1

감사, SSL을 다시 작성 될 것이다. 필자가 해결 한 유일한 방법은 IP 주소가 제한되어 있기 때문에 다른 수신 포트에 보안 연결이 필요한 여러 도메인을 배치하는 것이 었습니다.

제 생각에 문제는 https 프로토콜에서 호스트가 요청에 포함되어 있지 않다는 것입니다. 따라서 요청이 서버에 도달하면 apache는 요청 된 도메인을 알지 못하기 때문에 IP와 포트에서 첫 번째 일치 항목을 사용합니다.

유일한 해결 방법은 도메인마다 다른 포트를 사용하거나 다른 포트를 사용하는 것입니다.

와일드 카드 도메인 설정으로 https를 사용하면 불행히도 운이 없으므로 어쨌든 제대로 작동하지 않습니다.

+0

비슷한 것을 시도하고이 대답을 찾았습니다. 나는 그것을 할 수 있다고 믿습니다. HOST 헤더는 각 요청에서 보내지 만, 이것이 prob가되는 곳은 이름 기반 가상 호스트입니다. 먼저 SSL 계층을 처리해야하며 그 다음에 apache가 Host 헤더에 액세스 할 수 있어야합니다. 즉, SSL 기반의 이름 기반 가상 호스트를 사용할 수 없습니다. 그러나 SSL 계층이 이미 처리되었고 호스트 헤더가 다시 쓰기 지시문에 사용 가능하므로 Adam에서 리디렉션과 함께 원하는 작업을 수행 할 수 있어야합니다.나는 문서에서 HTTPS_HOST에 대한 언급을 보지 못했고 아마도 HTTP_HOST가 사용 되어야만 할 것입니다. – kbosak