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

栏目: 后端 · 发布时间: 6年前

内容简介:我也有同样的问题.我解决它的唯一方法是在不同的侦听端口上放置需要安全连接的不同域,因为我受限于IP地址.根据我的理解,问题是在https协议中HOST不包含在请求中.因此,当请求到达服务器时,apache只使用接收连接的IP和端口上的第一个匹配,因为它不知道请求的域.解决此问题的唯一方法是为每个域或不同的端口使用不同的IP.

我想要实现的目标如下:

我希望有许多子域名,例如abc.domain.com重定向到网址,例如www.domain.com/something?subdomain=abc

由于我重定向到完全限定的域,我需要使用反向代理来避免在浏览器中更改URL. (使用[P] Flag并打开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一起

谢谢,

我也有同样的问题.我解决它的唯一方法是在不同的侦听端口上放置需要安全连接的不同域,因为我受限于IP地址.

根据我的理解,问题是在https协议中HOST不包含在请求中.因此,当请求到达服务器时,apache只使用接收连接的IP和端口上的第一个匹配,因为它不知道请求的域.

解决此问题的唯一方法是为每个域或不同的端口使用不同的IP.

不幸的是,你使用带有通配符域设置的https运气不好,我不相信无论如何都要让它工作.

翻译自:https://stackoverflow.com/questions/1187289/setting-up-wildcard-subdomain-with-reverse-proxy-on-apache-2-2-3


以上所述就是小编给大家介绍的《mod-rewrite – 在apache 2.2.3上设置通配符子域(带反向代理)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Apache Modules Book

The Apache Modules Book

Nick Kew / Prentice Hall PTR / 2007-02-05 / USD 54.99

"Do you learn best by example and experimentation? This book is ideal. Have your favorite editor and compiler ready-you'll encounter example code you'll want to try right away. You've picked the right......一起来看看 《The Apache Modules Book》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换