【问题标题】:Apache: disable redirecting to default vhost on mismatching server nameApache:在服务器名称不匹配时禁用重定向到默认虚拟主机
【发布时间】:2014-02-01 14:34:03
【问题描述】:

我在同一台机器上运行了许多服务,其中一个使用 SSL,比如说“c3po.com”。 我的服务器的网址是https://c3po.comhttp://r2d2.comhttp://jarjar.com

问题是,如果我输入https://r2d2.com,apache 会将我重定向到https://c3po.com,甚至没有更改网址。换句话说,我将看到 c3po 服务,我的浏览器显示 http://r2d2.com

我知道,当 Apache 不能完全匹配一个虚拟主机时,它会使用第一个加载的与 ip:port 匹配的虚拟主机,所以没有:

<VirtualHost *:443>
    ServerName r2d2.com
    ...

它将拾取 :443 上找到的唯一 vhost,即:

<VirtualHost *:443>
    ServerName c3po.com
    ...

我真正想要的是当用户键入https://r2d2.comhttps://jarjar.com 时会显示一个错误页面,因为这些服务(通过http 启用了ssl)根本不存在!我怎样才能做到这一点?

【问题讨论】:

    标签: apache ssl https virtualhost


    【解决方案1】:

    检查一下

    名称虚拟主机 *:443

    在您的主配置中启用。然后使用您的错误页面创建一个在端口 443 上侦听的 VirtualHost,并使用 c3po.com 的配置创建另一个 VirtualHost。如果任何用户将名称解析为您的服务器的 IP(他们将用于所有站点),他们将转到默认站点,除非他们要去 c3po。

    以下内容应该可行:

    默认值:

    <VirtualHost *:443>
      ServerName _default_https
      DocumentRoot /path/to/error/page
      <Directory /path/to/error/page>
        ...
      </Directory>
    </VirtualHost>
    

    c3po:

    <VirtualHost *:443>
      ServerName c3po.com
      ServerAlias www.c3po.com
      DocumentRoot /path/to/c3po
      <Directory /path/to/c3po>
        ...
      </Directory>
    </VirtualHost>
    

    【讨论】:

      猜你喜欢
      • 2019-01-27
      • 2015-08-27
      • 2021-08-20
      • 2017-06-04
      • 2014-07-21
      • 2011-07-22
      • 1970-01-01
      • 2016-11-27
      • 2014-07-20
      相关资源
      最近更新 更多