可以,主域名与子域名需分别配置独立virtualhost块,各自指定唯一servername和documentroot,并通过dns或hosts文件将域名解析至服务器ip,配合directory权限控制实现隔离运行。
主域名和子域名可以共用一台apache服务器,但要各自独立运行、互不干扰,关键在于虚拟主机的精准匹配和目录隔离。核心不是“能不能”,而是“怎么让apache准确识别并路由到对应站点”。
主域名与子域名必须分设独立VirtualHost块
不能把它们写在一个
-
主域名配置示例:
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com -
子域名配置示例:
ServerName blog.example.com
DocumentRoot /var/www/blog.example.com -
另一个子域名(如API):
ServerName api.example.com
DocumentRoot /var/www/api.example.com
确保DNS与本地测试环境一致
Apache靠HTTP请求头中的Host字段判断该进哪个虚拟主机,所以域名解析必须准确:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 生产环境:在DNS服务商处为每个域名(example.com、blog.example.com、api.example.com)添加A记录,全部指向服务器公网IP;
- 本地开发测试:编辑/etc/hosts文件,追加三行:
127.0.0.1 example.com www.example.com
127.0.0.1 blog.example.com
127.0.0.1 api.example.com
目录权限与安全隔离不可省略
即使路径不同,Apache默认可能拒绝访问新目录。需显式授权(尤其Apache 2.4+):
- 每个DocumentRoot对应目录需有读取权限:
sudo chmod -R 755 /var/www/example.com - 在每个
内补充 块(Apache 2.4必需):
Require all granted
AllowOverride All - 避免使用宽松的Allow from all(Apache 2.2语法),它在2.4中已失效且不安全。
资源共享可通过符号链接或公共库目录实现
如果多个站点需要共用静态资源(如CSS、JS、上传文件),不建议复制多份。可行方案有:
- 将公共资源放在统一路径(如/var/www/shared/assets),再在各站点目录中创建符号链接:
ln -s /var/www/shared/assets /var/www/example.com/assets - 用Alias指令映射全局路径:
ServerName example.com
DocumentRoot /var/www/example.com
Alias /common /var/www/shared
这样访问http://example.com/common/style.css就可读取共享目录下的文件。 - 数据库或后端服务层面共享更稳妥,前端资源尽量静态分离,避免耦合。










