2009-07-27 25 views
8

に(リバースプロキシ付き)ワイルドカードサブドメインを設定するには、次のとおりです。 私は、このようなabc.domain.comなど、多数のサブドメインは、としてURLにリダイレクトしたいですwww.domain.com/something?subdomain=abcは私が達成しようとしています何のApache 2.2.3

私は完全修飾ドメインにリダイレクトしているので、ブラウザでURLの変更を避けるためにリバースプロキシを使用する必要がありました。

これは私のDNS設定

*.domain.com. 14400 A 111.111.11.1 

これは、Apacheのための私の仮想ホスト設定である([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にしようとしていたときに

私の主な問題がある://

これは、Apache

<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アドレスが限られていたため、異なるListenポートに安全な接続が必要な異なるドメインを配置することでした。

私の理解では、問題はhttpsプロトコルではHOSTが要求に含まれていないことです。したがって、要求がサーバーに到達すると、要求されたドメインが分からないため、接続が受信されたIPとポートで最初の一致が使用されます。

この問題を解決するには、ドメインごとに異なるIPを使用するか、別のポートを使用するかが唯一の問題です。

残念ながら、あなたはワイルドカードドメインの設定でhttpsを使用して運がうまくいきません。私はそれが動作するようにとにかくあるとは思いません。

+0

似たようなことをしようとしており、この答えが見つかりました。私はそれができると信じています。 HOSTヘッダーは各要求で送信されますが、これがprobとなるのは名前ベースの仮想ホストです。最初にSSLレイヤーを処理してから、apacheがHostヘッダーにアクセスできなければなりません。つまり、SSLを使って名前ベースの仮想ホストを作成することはできません。 しかし、SSLレイヤーはすでに処理されており、Hostヘッダーが書き換えディレクティブで使用できるため、Adamがリダイレクトで望むものを実行できるはずです。私は、ドキュメントでHTTPS_HOSTの言及を見ていない、多分HTTP_HOSTを使用する必要がありますか? – kbosak

関連する問題