我有一个应用程序:我们把它叫做米奇。
为了访问该应用程序,我已经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 应用程序都必须提供服务。
因此,基本上我有:
- 相同的三级域名
- 同一个应用程序
- 两个不同的二级域名。
我做了什么
首次尝试:配置 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 数字证书的问题:经过新的挑战和对第三级域名的新验证后,现在一切都按预期工作!