我正在尝试在单个 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.com
和a2ensite 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