我对 Ubuntu 相当陌生,但我必须将其安装在 VPS 上,才能将两个不同的网站显示为子域。其中一个是 Drupal 8 网站,另一个是静态 html 网站(index.html)
我在 /var/www 上建立了两个网站,并且我认为我在 apache2 上正确配置了一切,因为我将两个子域添加到hosts
文件中以便在本地访问并进行了一些测试,它们运行良好。
当我输入old.myaddress.com
或new.myaddress.com
两者时,它们都会在本地加载。但是,如果我尝试通过互联网或从另一台计算机访问,它只会加载 Drupal。为什么?
值得一提的是,我获得了一个域名,并将两个子域名配置old.myaddress.com
为new.myaddress.com
重定向到同一个 IP(我的 VPS 服务器 IP)。据我了解,apache 应该将用户发送到不同的站点吗?
这些是我的.conf 文件etc/apache2/sites-available
:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.myaddress.com
ServerAlias old.myaddress.com
DocumentRoot /var/www/oldwebsite/myaddress.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.myaddress.com
ServerAlias new.myaddress.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
为了澄清一下,我问的是在哪里缺少的配置是。如果本地加载网站有效,可能仍然是 apache?是我的 DNS?我的 ISP?Drupal 配置?我很困惑。
答案1
我假设您的 DNS 域已正确配置并new.myaddress.com
正确old.myaddress.com
解析到您的服务器 IP。您可以在另一台机器上使用以下命令进行检查:
nslookup old.myaddress.com
如果这些名称解析为同一个 IP,则您的配置在本地有效,而在远程无效,这很奇怪。ping
每个地址最终都会nslookup
报告相同的 IP 地址吗?
另外,ServerName
多个 VirtualHost 不应具有相同的值。您可以使用任意值ServerAlias
,只要相同的值只使用一次即可。我会www.myaddress.com
从旧网站的 VirtualHost 配置中删除。
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName old.myaddress.com
DocumentRoot /var/www/oldwebsite/myaddress.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.myaddress.com
ServerAlias new.myaddress.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
答案2
显然,我必须将正确的 IPv4 和 IPv6 设置为我的子域的 DNS 记录 A 和记录 AAAA。
对于像 1and1(Ionos)这样的 DNS 提供商,当您设置域或子域时,它会假定它托管在其位置,并且为了将其绑定到外部托管,您需要手动编辑记录 A 和 AAAA 以指向您的 IP 服务器。