在Apache 2.2.3上设置通配符子域(带有反向代理)

我想要实现的是以下几点:我想有许多子域名,如abc.domain.comredirect到一个url,如www.domain.com/something?subdomain=abc

由于我正在redirect到完全限定的域,所以我需要使用反向代理来避免浏览器中URL的更改。 (使用[P]标志并打开mod_proxy模块和一些其他模块)

这是我的DNS设置

*.domain.com. 14400 A 111.111.11.1 

这是我的虚拟主机configuration为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}$1 [C] RewriteRule ^([^.]+)\.domain\.com(.*) http://www.domain.com/something?subdomain=$1 [P,L] 

这个设置工作正常(让我知道,如果你认为你可以改善它当然)。

我的主要问题是当我试图设置https://

这是我的虚拟主机configuration为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 – 我得到的回应是主页,但无论我附加到子域的结尾,我会得到相同的回应。 这就像重写不好。

任何帮助将不胜感激,或者如果你可以分享你如何设置反向代理,重写,通配符子域和SSL在一起

谢谢,

我也有同样的问题。 我解决这个问题的唯一方法就是把不同的监听端口安全连接到不同的域,因为我限制了IP地址。

从我的理解,问题是在https协议的HOST不包括在请求中。 所以当请求到达服务器时,apache只使用IP和端口上的第一个匹配,因为它不知道它被请求的域。

唯一的解决方法是为每个域或不同的端口设置不同的IP地址。

不幸的是,你运气不好,使用HTTPS通配符域设置,我不相信有它的工作。