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

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

内容简介:我也有同样的问题.我解决它的唯一方法是在不同的侦听端口上放置需要安全连接的不同域,因为我受限于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上设置通配符子域(带反向代理)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

浪潮之巅(第三版)(上下册)

浪潮之巅(第三版)(上下册)

吴军 / 人民邮电出版社 / 2016-5 / 99.00元

一个企业的发展与崛起,绝非只是空有领导强人即可达成。任何的决策、同期的商业环境,都在都影响着企业的兴衰。《浪潮之巅》不只是一本历史书,除了讲述科技顶尖企业的发展规律,对于华尔街如何左右科技公司,以及金融风暴对科技产业的冲击,也多有着墨。此外,这本书也着力讲述很多尚在普及 或将要发生的,比如微博和云计算,以及对下一代互联网科技产业浪潮的判断和预测。因为在极度商业化的今天,科技的进步和商机是分不开的。......一起来看看 《浪潮之巅(第三版)(上下册)》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

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

Markdown 在线编辑器

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

UNIX 时间戳转换