在单个ec2实例上托pipe两个面向公众的网站

我正试图在一个亚马逊ec2实例上托pipe2个网站xxx.com和yyy.com。

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

用Ubuntu创buildec2实例并设置apache,mysql&Php

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

使用亚马逊route53我已经为每个域添加“A”logging指向其弹性IP地址。

最后在apache中创build虚拟主机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 

毕竟这还不行。

对于第一个网站,它说“谷歌浏览器无法加载网页,因为www.xxx.com花了很长时间回应。 网站可能已closures,或者您的Internet连接可能遇到问题。

对于第二个网站,它仍然会进入其域名注册商的主页(甚至在设置NSlogging之后)

任何帮助深表感谢

假设你正在运行Apache 2,你的/etc/apache2/目录里应该有一个sites-available目录。 这是你想要configuration你的网站的地方。 您将为每个网站创build一个如下所示的文件:

 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 ,将Apacheconfiguration为接受来自端口80的请求的虚拟主机:

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

Listen 80应该已经在ports.conf ;我把它包含在文件的NameVirtualHost ,尽pipe这个位置并不重要)

最后,在每个虚拟主机上运行一个a2ensite以启用它们。 a2ensite以站点configuration文件的名称作为参数。 所以,举例来说,如果你有/etc/apache2/sites-available/xxx.com/etc/apache2/sites-available/yyy.com ,你会做a2ensite xxx.coma2ensite yyy.com

然后你需要做的就是用service apache2 reload Apacheconfiguration,你应该准备好了。

如果您尝试在每个私有IP上运行网站,则必须在Apache虚拟主机configuration中指定该网站应该监听的私有IP。

例如,假设您有以下情况

 Elastic IP 1 -- Mapped to -- xxx1 Private IP Elastic IP 2 -- Mapped to -- xxx2 Private IP Site 1 -- using Elastic IP 1 as A record Site 2 -- using Elastic IP 2 as A record 

在虚拟主机configuration中指定要绑定到的IP地址

例如:网站1

  <VirtualHost xxx1:80> ServerName site1.com ServerAlias www.site1.com <VirtualHost> 

网站2:

 <VirtualHost xxx2:80> ServerName site2.com ServerAlias www.site2.com <VirtualHost> 

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

有了这个configuration – apache将路由

请求在弹性IP 1到私有IP 1上

请求弹性IP 2到私有IP 2

您必须同时在EC2实例上激活私有IP