在AWS上通过R53与EC2管理子域名及访问故障问题咨询
提问内容
我按照AWS官方教程给出的所有步骤创建子域名,教程步骤清晰易懂,我确认所有操作均正确执行。背景信息:在此之前,我已经在与主域名(example.com)绑定的服务器上部署了LAMP栈。
我的问题是如何上传并管理子域名(subdomain.example.com)的站点文件。我原本认为只需创建一个新的EC2实例,将其与子域名的"hosted zone"绑定后,即可像主域名的原有实例一样上传文件正常访问,但经过多次尝试后显然操作存在问题,子域名(subdomain.example.com)页面始终空白,仅显示“This site can't be reached.”提示,无法正常访问,恳请提供相关解决方案。
解决方案
第一步:先排查无法访问的核心问题
- 先验证域名解析是否生效:本地执行
nslookup subdomain.example.com(替换为你的实际子域名),确认返回的IP是否为你绑定的EC2公网IP- 如果IP不匹配,说明Route53配置有误:检查主域名托管zone是否添加了子域名托管zone对应的NS记录,同时检查子域名托管zone内的A记录是否正确指向目标EC2公网IP,可先将TTL设为300加快生效速度
- 如果IP匹配,说明是EC2或服务配置问题:
- 检查EC2安全组入站规则是否开放80(HTTP)、443(HTTPS)端口,允许0.0.0.0/0访问
- 检查EC2内部防火墙(iptables、firewalld等)是否放开80/443端口
- 直接在浏览器输入目标EC2的公网IP测试访问,如果也无法打开页面,先完成EC2上LAMP栈的部署调试,确保web服务正常运行
第二步:子域名站点文件管理方案
方案1:使用新EC2独立部署子域名(和你最初思路一致)
确认上述排查项全部通过后,按以下步骤配置:
- 创建子域名站点根目录:
mkdir -p /var/www/subdomain.example.com/public_html - 给目录赋予web服务权限:CentOS/RHEL系执行
chown -R apache:apache /var/www/subdomain.example.com/public_html,Debian/Ubuntu系执行chown -R www-data:www-data /var/www/subdomain.example.com/public_html - 新增Apache虚拟主机配置:
CentOS/RHEL系在/etc/httpd/conf.d/目录下新建subdomain.example.com.conf文件,内容如下:
Debian/Ubuntu系在<VirtualHost *:80> ServerName subdomain.example.com DocumentRoot /var/www/subdomain.example.com/public_html ErrorLog /var/log/httpd/subdomain.example.com.error.log CustomLog /var/log/httpd/subdomain.example.com.access.log combined </VirtualHost>/etc/apache2/sites-available/目录下新建配置文件,内容和上述一致,配置完成后执行a2ensite subdomain.example.com.conf启用站点 - 重启Apache服务:CentOS/RHEL系执行
systemctl restart httpd,Debian/Ubuntu系执行systemctl restart apache2 - 后续直接将子域名站点文件上传到
/var/www/subdomain.example.com/public_html目录即可完成管理
方案2:复用现有主域名EC2部署(无需新购EC2,成本更低)
- 无需创建子域名专属托管zone,直接在主域名托管zone内新增一条A记录,将subdomain.example.com指向现有主域名EC2的公网IP
- 在现有EC2内按方案1的虚拟主机配置步骤新增子域名站点配置,子域名和主域名的站点文件存放在不同目录,互不影响
- 配置完成后即可直接在对应目录管理子域名站点文件
内容的提问来源于stack exchange,提问作者red2099
相关产品推荐
相关产品推荐

