如何向 Apache 服务器配置添加第二个虚拟主机?

如何向 Apache 服务器配置添加第二个虚拟主机?

我在 AWS EC2 实例上运行了一个 Apache 服务器。目前,服务器上有一个虚拟主机正在成功运行,我想添加第二个虚拟主机/域,但我不知道如何让它运行。

匿名化数据,下面是我httpd.conf为运行第一个虚拟主机而添加的原始信息:

<Directory "/var/www/site-1/public">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

<VirtualHost *:80>
    DocumentRoot "/var/www/site-1/public"
    ServerName "site-1.com"
    ServerAlias "*.site-1.com"
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =site-1.com [OR]
    RewriteCond %{SERVER_NAME} =*.site-1.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

然后我在 Google Domains 中注册了以下内容site-1(使用虚假的 IP 地址):

Host name     Type  TTL      Data
site-1.com    A     1 hour   4.184.56.145
*.site-1.com  A     1 hour   4.184.56.145

httpd.conf然后,我使用 Certbot 添加了一个 SSL 证书,它在 Google Domains DNS 设置中添加了以下行和 ACME 质询:

Include /etc/httpd/conf/httpd-le-ssl.conf

一切运行正常。然后我购买了第二个域名(site-2.com),现在,我只是想使用index.html站点目录根目录中的一个非常简单的文件(即/var/www/site-2)来运行虚拟主机。

为此,我在的最底部添加了以下内容httpd.conf

<Directory "/var/www/site-2">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

<VirtualHost *:80>
    DocumentRoot "/var/www/site-2"
    ServerName "site-2.com"
</VirtualHost>

并且已将以下 DNS 设置添加到 Google Domains 中site-2

Host name     Type  TTL      Data
site-2.com    A     1 hour   4.184.56.145

自从为 添加了所有这些设置以来已经过去了几个小时site-2,并且我用 重新启动了 Apache 服务器几次sudo systemctl restart httpd。但是,当我转到 时site-2.com,我得到了以下页面,它不是index.html我放在 下的示例文件/var/www/site-2

在此处输入图片描述

还值得注意的是, 的图标site-2实际上是 的图标site-1。不知道为什么。此外, 的目录/文件权限/所有权site-2与 的相同site-1

有人能提供一些关于为什么这不起作用的想法吗?不管怎样,在做了大量研究之后,我认为我必须将以下行添加到httpd.conf,但这样做并重新启动服务器并没有什么区别:

NameVirtualHost *:80

编辑:我刚刚想通了。无论出于什么原因,site-2都指向var/www/html目录。如果我将示例index.html文件放入该目录,那么当我访问 site-2.com 时,它会正确加载。这是为什么?为什么以下虚拟主机块不起作用?

<VirtualHost *:80>
    DocumentRoot "/var/www/site-2"
    ServerName "site-2.com"
</VirtualHost>

答案1

说实话,我不知道是怎么回事,但它刚刚开始工作。也许是 DNS 传播问题(不确定),但我在原始问题中列出的配置开始工作了。

相关内容