首页 > 解决方案 > Apache2 VirtualHost SSL 配置问题

问题描述

Debian 10 / Apache2 -

目标:将所有网络流量重定向到 VPS 服务器到 SSL。我托管了 2 个站点:bjmurrey.com 和 nextcloud.bjmurrey.com。我有 1 个 IP 地址。

问题:我一生都无法找到一种方法来完成这项工作。我已经尝试了在这里和其他地方发布的 1000 条建议,但没有成功。我得到的最接近的是在输入 nextcloud.bjmurrey.com 时所有内容都重定向到https://bjmurrey.com 。我也是这方面的新手,所以请善待。

我有一个如下所示的 default.conf:

<VirtualHost *:80>
    ServerName www.bjmurrey.com
    ServerAlias bjmurrey.com
    DocumentRoot /var/www/blog
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    Redirect permanent / https://bjmurrey.com/
</VirtualHost>

<VirtualHost *:80>
    ServerName nextcloud.bjmurrey.com
    DocumentRoot /var/www/nextcloud
    ServerAlias nextcloud.bjmurrey.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    Redirect permanent / https://nextcloud.bjmurrey.com/
</VirtualHost>

我有一个如下所示的 default-ssl.conf:

<VirtualHost bjmurrey.com:443> 
   ServerName bjmurrey.com 
   ServerAlias www.bjmurrey.com
   DocumentRoot /var/www/blog
   SSLEngine on 
   SSLCertificateFile /etc/letsencrypt/live/bjmurrey.com/fullchain.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/bjmurrey.com/privkey.pem
   Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

<VirtualHost nextcloud.bjmurrey.com:443>
    ServerName nextcloud.bjmurrey.com
    DocumentRoot /var/www/nextcloud
    ServerAlias nextcloud.bjmurrey.com
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/nextcloud.bjmurrey.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/nextcloud.bjmurrey.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

bjmurrey.com 位于 var/www/blog 和 nextcloud.bjmurrey.com 位于 var/www/nextcloud 目录中。

我的 DNS 记录 www 和 nextcloud 都指向同一个 IP。我只有 1 个可用 IP。这是一个非常低流量的网站。我已经做了各种各样的事情,比如只将默认虚拟主机重定向到 nextcloud 并删除了所有提及 www 站点的内容,它仍然重定向到 bjmurrey.com,或者重定向到 SSL 错误,指出无法加载 nextcloud,因为ssl 仅适用于 bjmurrey.com。如您所见,我已经为 bjmurrey.com 和 nextcloud.bjmurrey.com 使用letsencrypt 制作了证书。

我正要沮丧地拔掉我所有的头发,所以我知道我已经在这里挖掘了我所有的知识。帮助!

标签: ssldebianapache2virtualhostnextcloud

解决方案


我已经用 http 重新测试并且正在为我工​​作。

两个地址mydomain.myhost.example.commyhost.example.com 解析为相同的 IP。

这是我的配置文件

ServerName example.com

<VirtualHost *:80>
        ServerName mydomain.myhost.example.com
        DocumentRoot /var/www/mydomain
</VirtualHost>

<VirtualHost *:80>
        ServerName myhost.example.com
        DocumentRoot /var/www/myhost
</VirtualHost>

在 Ubuntu 20.04.1、Apache 2.4 中测试


推荐阅读