如何使用 VirtualDocumentRoot 为启用了 SSL 的 www 子域提供服务?

如何使用 VirtualDocumentRoot 为启用了 SSL 的 www 子域提供服务?

我可以服务http://万维网.domain.com 和http://域名.com。 还https://domain.com 也可以。但不是https://万维网.domain.com 不知为何不起作用。我甚至在 sites-availible 文件夹中创建了 www.domain.com 并启用了它。我重新加载了配置,但仍然不起作用。

A通配符证书所以这不是问题。

    <IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAdmin [email protected]
        ServerName *.domain.com:443
        ServerAlias www.domain.com
        VirtualDocumentRoot /var/www/%0

谢谢你的帮助。

答案1

要让同一个站点同时监听 HTTP 和 HTTPS,您将需要 2 个虚拟主机,一个用于 SSL,一个用于普通连接。

从“ServerName”参数中删除:443。

我刚刚在我的测试环境中创建了一个按照您在此处请求的配置,这是我的工作配置文件中的内容:

<IfModule mod_ssl.c>   
  <VirtualHost _default_:443>
    ServerAdmin [email protected]

    ServerName *.srv.fbh
    VirtualDocumentRoot /www/%0/ 

    SSLEngine on
    SSLCertificateFile    /etc/ssl/test/server.crt
    SSLCertificateKeyFile /etc/ssl/test/server.key   
  </VirtualHost>
</IfModule>

此外,您有一个 www.domain.com 的 ServerAlias - 这不是必需的,因为通配符 *.domain.com 会捕获它。

答案2

<IfModule mod_ssl.c>
  <VirtualHost *:443>
    ServerAlias *
    UseCanonicalName Off
    VirtualDocumentRoot /var/www/%0

    SSLEngine on
    SSLCertificateFile      /path-to-keys/ca.crt
    SSLCertificateKeyFile   /path-to-keys/yours.key
    SSLCertificateChainFile /path-to-keys/bundle.crt

    RequestHeader set X_FORWARDED_PROTO 'https'
  </VirtualHost>
</IfModule>

当然,您需要在那里有适当的文件,并记得设置yours.keychmod 400。我确实注意到您已经让这部分工作了,只是让答案更完整。;)

相关内容