涉及虚拟主机的知识参见:Apache HTTP Server Version 2.2 文档
Apache提供了方便的工具来管理配置文件,就是 a2ensite和a2dissite,它们都在apache2-common包里。
/etc/apache2/sites-available目录下存放可用的VirtualHost配置文件 。
/etc/apache2/sites-enable 目录下存放已经生效的VirtualHost配置文件的符号链接(Symbolic Link),该链接指向sites-available下的同名文件。
使用命令a2ensite可以将sites-available目录下的配置文件生效,并且生效后会自动在sites-enable目录下创建同名链接。
使用命令a2dissite可以将sites-enable目录下的配置文件链接失效并自动删除该链接。
通过a2dissite和a2ensite,我们可以快速激活/屏蔽站点,加快开发和部署效率。
实例:
1. sites-available目录下新建VirtualHost配置文件 :

Listen 80
NameVirtualHost *:80
<VirtualHost *:80>
ServerName oas.com
DocumentRoot /var/www/html/oas/public
ErrorLog ${APACHE_LOG_DIR}/oas_error.log
CustomLog ${APACHE_LOG_DIR}/oas_access.log combined
</VirtualHost>
2. 使用a2dissite命令来使原有的site配置失效

3. 使用a2ensite命令来配置新site


4. service apache2 reload 使新配置生效

5. 配置 hosts 文件,将域名指向本地回环地址
mac 下hosts文件在/etc/hosts。

127.0.0.1,通常被称为本地回环地址(Loopback Address),不属于任何一个有类别地址类。它代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口。ipv6的回环地址是::1。
6. 访问 自定的域名 ,大功告成

结语
以上 的Apache2是运行在docker容器中的,通过端口映射可在本地访问,端口映射应该就是一个端口的包进行转发。我们的http头中包含“host: oas.com”字段就行,需要注意的是要配置一下 hosts 文件将域名对应主机解析在本地,否则就去找 DNS 解析了。
