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

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

我想要实现的是:我想要拥有多个子域名,例如abc.域名.com重定向到如下 URLwww.domain.com/something?subdomain=abc

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

这是我的 DNS 设置

*.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}$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- 我得到的响应是主页,但无论我在子域名末尾附加什么,我都会得到相同的响应。就像重写响应不太好一样。

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

谢谢,

答案1

由于 SSL 是一种传输协议,它包装了 http,因此您不能拥有 SSL vhosts。这意味着 HTTP_HOST 没有意义...尝试用 SERVER_NAME 替换 HTTPS_HOST

相关内容