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

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

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

查看所有标签

猜你喜欢:

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

大型网站技术架构演进与性能优化

大型网站技术架构演进与性能优化

许令波 / 电子工业出版社 / 2018-6 / 79

《大型网站技术架构演进与性能优化》从一名亲历者的角度,阐述了一个网站在业务量飞速发展的过程中所遇到的技术转型等各种问题及解决思路。从技术发展上看,网站经历了Web应用系统从分布式、无线多端、中台到国际化的改造;在解决大流量问题的方向上,涉及了从端的优化到管道到服务端甚至到基础环境优化的各个层面。 《大型网站技术架构演进与性能优化》总结的宝贵经验教训可以帮助读者了解当网站遇到类似问题时,应如何......一起来看看 《大型网站技术架构演进与性能优化》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

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

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试