【问题标题】:Apache VirtualHost multiple domain multiple SSLApache VirtualHost 多域多 SSL
【发布时间】:2017-06-03 19:58:35
【问题描述】:

您好,我有以下用例,我在远程服务器 /var/www/foobar 上有一个应用程序(我们称之为 foobar),并且我有以下 Apache VirtualHost conf

<VirtualHost *:80>
  DocumentRoot /var/www
  # This is to redirect http traffic to https
  Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
  SSLEngine On
  SSLCertificateFile /etc/ssl/certs/example.com.crt
  SSLCertificateKeyFile /etc/ssl/private/example.com.key
  SSLCertificateChainFile /etc/ssl/certs/example.com.bundle.crt

  ServerName example.com:443
  DocumentRoot /var/www/foobar
</VirtualHost>

而且一切正常。现在假设我有另一个域 example2.com,我希望它指向同一个 foobar 应用程序。我目前的想法是在下面创建另一个 VirtualHost,像这样

<VirtualHost *:443>
  SSLEngine On
  SSLCertificateFile /etc/ssl/certs/example2.com.crt
  SSLCertificateKeyFile /etc/ssl/private/example2.com.key
  SSLCertificateChainFile /etc/ssl/certs/example2.com.bundle.crt

  ServerName example2.com:443
  DocumentRoot /var/www/foobar
</VirtualHost>

但我想知道这是做这种事情的正确方法吗?我需要两个域都是“独立的”,所以我没有从 example2.com 永久重定向到 example.com

【问题讨论】:

  • 您使用两个虚拟主机的配置通常用于两个域。问题是什么?你有错误吗?
  • 只是想知道这是一个很好的做法,因为您可以看到 example1.com 和 example2.com 都指向同一个应用程序。
  • 提供对不同名称的相同应用程序的访问是一种常见的解决方案。通常还涉及到各个站点的一些自定义配置
  • 哦,好的,谢谢,我会坚持这个配置,只是想知道是否有更好的方法,例如 ServerAlias 但 SSL 证书有效。
  • 您可以使用ServerAlias 和通配符作为提议@ycr,但随后需要使用子域,例如。 *.domain.com 应用于 example1.domain.comexample2.domain.com

标签: apache ssl


【解决方案1】:

您可以执行以下操作,您可以为此使用服务器别名,而且我认为拥有 2 个虚拟主机也没有任何问题。

<VirtualHost *:443>
    ServerName example1.com
    ServerAlias example2.com
    SSLEngine on
    SSLCertificateFile  /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/testlink

</VirtualHost>

如果您无法获得证书错误,您可以使用通配符 CN 创建证书。例如:*.comthis 将匹配 example1.com 和 example2.com。

【讨论】:

  • 但是当我使用 abc.def.co 连接到该站点时,没有 SSL。
  • 为什么 SSL 不可用?
  • 当我使用 abc.def.com SSL 连接时,如果没问题,因为证书是针对 abc.def.com 的。当我使用 abc.def.co 连接时,它说没有 SSL 证书。请注意,它有 2 个不同的域,而不是子域。
  • 哎呀,我错过了 com 中的一个 m,如果你想配置另一个域,你应该有另一个 VirtualHost 块
  • 无意冒犯,但你的答案现在让我感到困惑,因为 ServerName 和 Alias 是相同的
猜你喜欢
  • 2011-04-19
  • 2015-05-10
  • 2012-05-10
  • 2015-03-04
  • 2021-10-04
  • 2016-05-04
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多