Apache 提供了三种虚拟主机配置方式,用于在同一台服务器上托管多个网站或应用,这些方式灵活适应不同场景需求,具体如下:
基于 IP 的虚拟主机(IP-based Virtual Hosting)
原理:每个网站绑定独立的 IP 地址。
工作流程:
- 服务器配置多个 IP 地址(不同网卡或别名)。
- Apache 监听不同 IP 的请求(如
168.1.10:80
和168.1.20:80
)。 - 用户访问特定 IP 时,Apache 自动匹配对应网站。
典型配置示例:
<VirtualHost 192.168.1.10:80> ServerName site1.com DocumentRoot /var/www/site1 </VirtualHost> <VirtualHost 192.168.1.20:80> ServerName site2.com DocumentRoot /var/www/site2 </VirtualHost>
优点:
- 兼容性最佳(支持早期不支持 SNI 的浏览器)。
- 适用于需要独立 IP 的 SSL 证书场景。
缺点:
- 依赖多个 IP 地址(IPv4 资源紧张)。
- 配置和维护成本较高。
基于端口的虚拟主机(Port-based Virtual Hosting)
原理:通过不同端口号区分网站(如 80
、8080
)。
工作流程:
- Apache 监听多个端口(如
80
和8080
)。 - 用户访问
http://example.com:8080
时,服务器返回对应端口的网站。
典型配置示例:
Listen 80 Listen 8080 <VirtualHost *:80> ServerName site1.com DocumentRoot /var/www/site1 </VirtualHost> <VirtualHost *:8080> ServerName site2.com DocumentRoot /var/www/site2 </VirtualHost>
优点:
- 无需额外 IP 或域名。
- 适合测试环境或内部服务(如开发版网站)。
缺点:
- 用户需手动输入端口号(不友好)。
- 标准 HTTP(S) 端口(80/443)外的访问可能被防火墙拦截。
基于域名的虚拟主机(Name-based Virtual Hosting)
原理:通过域名区分网站,共享同一 IP 和端口。
工作流程:
- 用户访问
blog.example.com
时,浏览器在 HTTP 头中携带Host: blog.example.com
。 - Apache 解析
Host
字段,分配对应网站内容。
典型配置示例:
<VirtualHost *:80> ServerName main-site.com ServerAlias www.main-site.com DocumentRoot /var/www/main </VirtualHost> <VirtualHost *:80> ServerName blog.main-site.com DocumentRoot /var/www/blog </VirtualHost>
优点:
- 高效利用 IP 资源(单 IP 支持无限域名)。
- 配置简单,主流网站首选方案。
缺点:
- 旧版浏览器(如 IE6)不支持 SNI 时,HTTPS 配置受限(现代浏览器无此问题)。
总结与选择建议
类型 | 适用场景 | 资源需求 |
---|---|---|
基于 IP | 需独立 IP 的 SSL 证书、兼容旧系统 | 多个 IP 地址 |
基于端口 | 测试环境、内部工具 | 单 IP,多端口 |
基于域名 | 常规网站、多域名托管 | 单 IP,域名解析 |
最佳实践:
- 大多数场景选择基于域名的虚拟主机(节省 IP、易于管理)。
- 启用 HTTPS 时,确保使用支持 SNI 的 SSL 证书(如 Let’s Encrypt)。
- 混合使用:可组合配置(如域名+端口实现临时重定向)。
引用说明基于 Apache HTTP Server 官方文档(Apache 2.4 Virtual Host Documentation),结合服务器管理实践总结,确保技术准确性,配置示例已简化,实际部署需按环境调整参数。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/36335.html