AWS EC2 Amazon Linux配置Apache多虚拟主机访问报错排查
配置错误点及修复方案
首先补充背景:Amazon Linux 属于 RHEL 系发行版,和 Debian/Ubuntu 系的 Apache 目录结构不同,默认没有 /etc/apache2/sites-available 目录属于正常情况,你可以选择直接修改主配置文件/etc/httpd/conf/httpd.conf,也可以把自定义配置写到/etc/httpd/conf.d/目录下的.conf后缀文件中,更便于管理。
核心错误1:ServerName 配置不符合语法规则
ServerName 字段仅支持填写域名、IP地址或带端口的IP/域名,不允许携带路径后缀。你填写的13.59.121.162/food、13.59.121.162/admin属于无效值,Apache无法识别匹配这两个虚拟主机,会默认 fallback 到排序第一的虚拟主机配置,所以你访问根路径时直接返回了第一个虚拟主机指定的/var/www/html/food下的内容。
核心错误2:虚拟主机使用场景错误
<VirtualHost> 是用来区分不同域名、不同监听IP、不同监听端口的站点的,不能用来实现同站点下不同路径映射不同项目目录的需求。
超时原因排查
你已经确认根路径可以正常访问,说明80端口安全组、实例防火墙规则是正常的,子路径返回超时大概率是修改配置后未重启Apache服务,或者配置语法错误导致Apache服务运行异常,可先执行sudo apachectl configtest验证配置语法是否合法。
正确配置方案
- 先删掉你之前在
httpd.conf末尾添加的两个无效<VirtualHost>配置块 - 新增如下配置实现路径映射需求:
# 授权两个项目目录的访问权限 <Directory "/var/www/html/food"> AllowOverride All Require all granted </Directory> <Directory "/var/www/html/backoffice"> AllowOverride All Require all granted </Directory> # 将/admin路径映射到backoffice目录 Alias /admin /var/www/html/backoffice
- 验证配置语法正确性:
sudo apachectl configtest
返回Syntax OK后执行重启命令生效:
sudo systemctl restart httpd
配置生效后即可通过http://13.59.121.162/food访问美食项目、http://13.59.121.162/admin访问后台项目。
内容的提问来源于stack exchange,提问作者Alberto Siurob
相关产品推荐
相关产品推荐

