我正在尝试在AWS中使用一些子域(app.domain1.com)设置2个域(domain1.com和domain2.com),并在单个实例(Amazon Linux,PHP,MySQL)上运行它们。
我在AWS Route53中设置了3个托管区域,并进行了以下配置。
托管区1:
domain1.com
A型 52.108.XX.YY托管区2
domain2.com
A型 52.108.XX.YY托管区3
app.domain1.com
A型 52.108.XX.YY
此外,我已将以下代码添加到VirtualHost标记中的http.conf文件中。
<VirtualHost *:80>
ServerName domain1.com
DocumentRoot "/var/www/html/domain1"
ErrorLog "logs/domain1-error_log"
CustomLog "logs/domain1-access_log" common
</VirtualHost>
<VirtualHost *:80>
ServerName domain2.com
DocumentRoot "/var/www/html/domain2"
ErrorLog "logs/domain2-error_log"
CustomLog "logs/domain2-access_log" common
</VirtualHost>
<VirtualHost *:80>
ServerName app.domain1.com
DocumentRoot "/var/www/html/app"
ErrorLog "logs/app.domain1-error_log"
CustomLog "logs/app.domain1-access_log" common
</VirtualHost>
但是,只有domain1.com和domain2.com正在解决。当我访问app.domain1.com时,它给了我一个&#34;找不到服务器&#34;错误。请帮助如何设置子域 - 托管区域设置或httpd.conf中是否存在问题?
答案 0 :(得分:4)
好的,所以经过大约2个小时的阅读各种网站和修补,我已经准备好了。以下是如何做到这一点。
基本上,每个域名不应超过1个托管区域(HZ),否则事情真的会很糟糕。如果域名的HZ超过1个,请删除为子域名创建的HZ。
每个HZ将有4条记录 -
默认情况下会创建以下两条记录。不要编辑/删除它们 NS - 这是名称服务器记录。如果AWS Route53不是您的注册商,请使用
ns-servernumber.awsdns-number.com.
和其他三个(共4个)记录来更改注册商的名称服务器。
SOA - 让这条记录成为。请勿触摸此。创建以下两个记录集(蓝色按钮) A - 将名称留空。为类型选择
A-IPv4 address
。在 Value 中输入Elastic Load Balancer或EC2实例的IP地址 CNAME - 在名称字段中添加*(星号/通配符)。从类型的下拉列表中选择CNAME
在值中输入域名。
现在创建http.conf
文件并构建我在问题中的虚拟主机。
事情现在应该有效:)
答案 1 :(得分:1)
您可以按照此链接上的教程进行操作:http://brianshim.com/webtricks/host-multiple-sites-amazon-ec2/
根据链接,常见错误是:
有效吗?如果没有,这是一个可能的原因。可能有 另一个配置文件干扰了这个。检查 /etc/httpd/conf.d中的另一个.conf文件。通常是你的主要 httpd.conf将在此目录中包含另一个.conf文件。使 确定它没有一些干扰的虚拟主机设置 和你的一起。
设置配置后,应运行:
sudo service httpd restart
答案 2 :(得分:0)
可以在 AWS-EC2 实例上安装 Apache HTTP Server 并为每个DNS或Sub-DNS配置 VirtualHost ,如下所示: Amazonian
为简洁起见,请阅读此thread次讨论,此官方example和techrepublic post。
希望这有帮助!