Настройка поддомена подстановочных знаков (с обратным прокси) на apache 2.2.3

то, что я пытаюсь достичь следующих: Я хочу иметь многочисленные поддомены, такие как abc.domain.com перенаправление на url-адрес, напримерwww.domain.com/something?subdomain=abc

поскольку я перенаправляю на полный домен, мне нужно было использовать обратный прокси-сервер, чтобы избежать изменения URL-адреса в браузере. (используя флаг [P] и включив модуль mod_proxy и некоторые другие модули)

это мой DNS setup

*.domain.com.   14400    A  111.111.11.1

это моя конфигурация виртуального хоста для apache

<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}          [C]
RewriteRule   ^([^.]+).domain.com(.*) http://www.domain.com/something?subdomain= [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}          [C]
    RewriteRule   ^([^.]+).domain.com(.*) https://www.domain.com/something?subdomain= [P,L]

</VirtualHost>

всякий раз, когда я звоню https://abc.domain.com - ответ я получение-это домашняя страница, но независимо от того, что я добавляю в конец поддомена, я получу тот же ответ. Это похоже на то, что переписывание не отвечает Хорошо.

любая помощь была бы оценена, или если бы вы могли поделиться тем, как вы бы настроить обратный прокси, переписать, поддомен подстановочных знаков и SSL все вместе

спасибо,

1 ответов


У меня была такая же проблема. Единственный способ решить это-поместить разные домены, которым нужно безопасное соединение на разных портах прослушивания, потому что я был ограничен IP-адресами.

насколько я понимаю, проблема в том, что в протоколе https хост не включен в запрос. Поэтому, когда запрос достигает сервера, apache просто использует первое совпадение по IP и Порту, на котором было получено соединение, потому что он не знает домен, который он запрашивал от.

единственная работа для этого-иметь другой IP для каждого домена или другой порт.

к сожалению, вам не повезло с использованием https с настройкой подстановочного домена, я не считаю, что в любом случае, чтобы заставить его работать.