我做了什么

我做了什么

我有一个应用程序:我们把它叫做米奇。

为了访问该应用程序,我已经vhost在 apache 中进行了配置,以便在访问三级域 mickey.example.com 时,可以使用应用程序 Mickey。

这有效。

它的配置如下:

<VirtualHost *:80>
        ServerName mickey.example.com
        # ServerAlias Not required

        ServerAdmin [email protected]
        DocumentRoot /var/www/mickey.example.com/public_html

        ErrorLog /var/www/mickey.example.com/log/error.log
        CustomLog /var/www/mickey.example.com/log/access.log combined

        <Directory /var/www/mickey.example.com>
                AllowOverride All
        </Directory>

        RewriteEngine on
        RewriteCond %{SERVER_NAME} =mickey.example.com
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

现在我想配置另一个域名:mickey.example2.com

最终结果应该是,当从 mickey.example.com 访问时和从 mickey.example2.com 访问时,Mickey 应用程序都必须提供服务。

因此,基本上我有:

  1. 相同的三级域名
  2. 同一个应用程序
  3. 两个不同的二级域名。

我做了什么

首次尝试:配置 DNSCNAME别名

第一次尝试时,我简单地在域 example2.com 中添加了一条指向 mickey.example.com 的新 DNS 记录:

域 example2.com 的 DNS:

  • 类型:CNAME
  • 主持人:米奇
  • 指向:mickey.example.com

这不起作用:DNS 传播后,当我访问域 mickey.example.com 时,服务器将我重定向到 Apache 中配置的默认域(即 defaultexample.com)

第二次尝试

由于我没有立即指出它是重定向到 defaultexample.com 的服务器,因此我将 DNS 记录从 CNAME 记录更改为A

域 example2.com 的 DNS:

  • 类型:A
  • 主持人:米奇
  • 指向:123.456.789.012

其中 123.456.789.012 是服务 Mickey 应用程序的服务器的 IP。

这不起作用:服务器继续将我重定向到defaultexample.com。

此时我猜是服务器重定向了我,因此我开始深入研究 Vhost 配置(将 DNS 记录保留为 1 ,在我写这个问题时A它就是1)。A

第三次尝试:ServerAlias在 Apache 中

作为第一次尝试,我尝试向为 mickey.example.com 提供服务的网站ServerAlias添加一个:vhost

<VirtualHost *:80>
        ServerName mickey.example.com
+       ServerAlias mickey.example2.com

        ServerAdmin [email protected]
        DocumentRoot /var/www/mickey.example.com/public_html

        ErrorLog /var/www/mickey.example.com/log/error.log
        CustomLog /var/www/mickey.example.com/log/access.log combined

        <Directory /var/www/mickey.example.com>
                AllowOverride All
        </Directory>

        RewriteEngine on
        RewriteCond %{SERVER_NAME} =mickey.example.com
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

这不起作用:Apache 继续将我重定向到 defaultdomain.com。

第四次尝试:专门vhost

此时我创建了一个专用的vhost调用它mickey.example2.com.conf

<VirtualHost *:80>
-        ServerName mickey.example.com
+        ServerName mickey.example2.com
        DocumentRoot /var/www/mickey.example.com/public_html

        ErrorLog /var/www/mickey.example.com/log/error.log
        CustomLog /var/www/mickey.example.com/log/access.log combined

        <Directory /var/www/mickey.example.com>
                AllowOverride All
        </Directory>

        RewriteEngine on
-        RewriteCond %{SERVER_NAME} =mickey.example.com
+        RewriteCond %{SERVER_NAME} =mickey.example2.com
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

vhost然后我在 Apache 中启用了新功能并重新加载它:

sudo a2ensite mickey.example2.com.conf
sudo systemctl reload apache2

没什么:访问 mickey.example2.com 继续将我重定向到 defaultdomain.com

现在做什么?

此时我不知道该如何继续:我已经尝试了所有我认为应该有效的方法,但没有效果。

有什么建议么?

如上所述,我需要从 mickey.example.com 和 mickey.example2.com 提供完全相同的应用程序。

关于如何做到这一点有什么想法吗?

答案1

最后我终于解决了!

经过数小时的测试和在服务器中挖掘,我发现这是 Let's Encrypt 数字证书的问题:经过新的挑战和对第三级域名的新验证后,现在一切都按预期工作!

相关内容