在单个 EC2 实例上托管两个面向公众的网站

在单个 EC2 实例上托管两个面向公众的网站

我正在尝试在单个 amazon ec2 实例上托管 2 个网站 xxx.com 和 yyy.com。

到目前为止这就是我所做的。

使用 Ubuntu 创建 ec2 实例并设置 apache、mysql 和 Php

在 Ec2 上,我添加了 2 个弹性 IP 地址,并将它们与我的主私有 IP 地址和辅助私有 IP 地址关联。

使用 amazon route53,我为每个域添加了“A”记录以指向其弹性 IP 地址。

最后在 apache 中创建虚拟主机 conf 文件并激活这些站点。conf 文件如下所示:

    ServerName xxx.com
    ServerAlias www.xxx.com
    ServerAdmin my email address
    DocumentRoot /var/www/xxx.com/public_html
    ErrorLog /var/www/xxx.com/logs/error.log
    CustomLog /var/www/xxx.com/logs/access.log combined

经过这一切,它仍然不起作用。

对于第一个网站,它显示“Google Chrome 无法加载网页,因为 www.xxx.com 响应时间过长。该网站可能已关闭,或者您的互联网连接可能存在问题。

对于第二个网站,它仍然会转到其域名注册商的主页(即使在设置 NS 记录之后)

任何帮助深表感谢

答案1

假设您正在运行 Apache 2,您的/etc/apache2/目录中应该有一个sites-available目录。这是您要配置站点的地方。您将为每个站点创建一个文件,如下所示:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName xxx.com
    ServerAlias www.xxx.com
    ServerAdmin my email address
    DocumentRoot /var/www/xxx.com/public_html

    ErrorLog /var/www/xxx.com/logs/error.log
    CustomLog /var/www/xxx.com/logs/access.log combined
</VirtualHost>

然后,在 中/etc/apache2/ports.conf,您将配置 Apache 以接受来自端口 80 的请求的虚拟主机:

...
NameVirtualHost *:80
Listen 80
...

Listen 80应该已经在了ports.conf;我把它包括进来是为了显示在文件中放置的位置NameVirtualHost,尽管位置实际上并不重要)

最后,a2ensite在每个虚拟主机上运行以启用它们。a2ensite以站点配置文件的名称作为其参数。因此,例如,如果您有/etc/apache2/sites-available/xxx.com/etc/apache2/sites-available/yyy.com,则需要执行a2ensite xxx.coma2ensite yyy.com

然后您需要做的就是使用 重新加载 Apache 配置service apache2 reload,然后就可以开始了。

答案2

如果您尝试在每个私有 IP 上运行一个网站,那么在 Apache 虚拟主机配置中,您需要指定该网站应该监听的私有 IP。

例如假设你有以下场景

Elastic IP 1 -- Mapped to -- x.x.x.1 Private IP
Elastic IP 2 -- Mapped to -- x.x.x.2 Private IP

Site 1 -- using Elastic IP 1 as A record 
Site 2 -- using Elastic IP 2 as A record

在虚拟主机配置中指定要绑定的 IP 地址

例如:站点 1

 <VirtualHost x.x.x.1:80>
    ServerName site1.com
    ServerAlias www.site1.com
 <VirtualHost>

站点 2:

<VirtualHost x.x.x.2:80>
    ServerName site2.com
    ServerAlias www.site2.com
 <VirtualHost>

请根据您的要求使用其余配置。

通过此配置 - Apache 将路由

访问 Elastic IP 1 到 Private IP 1 的请求

访问弹性 IP 2 到私有 IP 2 的请求

您必须在 EC2 实例上同时拥有处于活动状态的私有 IP

相关内容