ssl - 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 制作了证书。
我正要沮丧地拔掉我所有的头发,所以我知道我已经在这里挖掘了我所有的知识。帮助!
解决方案
我已经用 http 重新测试并且正在为我工作。
两个地址mydomain.myhost.example.com
并myhost.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 中测试
推荐阅读
- openedge - 有没有办法使用正在进行的动态查询有条件地应用内部联接?
- java - Java JDBC 在插入后从 DEFAULT 中检索值
- bash - 使用 BASH 文件名中的参数作为集群上 Julia 脚本的参数
- python - 我应该如何使用纯 OpenCV 函数将图像分割成多个部分,这样我就不必将它从我的 GPU 上取下来?
- c - C:将矩阵传递给函数的所有可能方法以及有关 argc 和 argv 的一些信息
- javascript - 如何让 API 更改其数据?
- javascript - 如何通过 Dotnet 和 Docker 使用 React 进行热重载
- functional-programming - Hindley-Milner - 有条件换人?
- java - 除了 SimpleDateFormat.parse 之外,是否还需要使用 Regex 来检查日期完整性?
- javascript - 显示来自 Django 的 HTML 内容