流程
- 客户端发起请求
- 请求发送到指定地址,被Apache监听到
- Apache 根据请求信息,找到最匹配的虚拟节点[^2]
- 找到虚拟节点,返回节点指定的资源
启动
每次电脑开机会自启动mysql.exe 占用了3306端口。当服务没开齐变黄图标。 1. 进入cmd 输入 netstat -ano 查看端口占用 2. 找到对应占用端口的PID,在任务管理器关了。 3. 或者直接在任务管理器搜索 mysql关了 当黄图标提示没 开全服务的时候,可以看看错误日志
配置
VirtualHost <VirtualHost></VirtualHost> 带有描述虚拟节点的属性,描述虚拟节点功能,包裹资源地址(成为一个虚拟节点) 必备的2个内容节点:
- ServerName (为啥必备,下面有说)
- DocumentRoot(节点保存有资源地址)
<VirtualHost 127.0.0.1:80>
ServerName xxx
DocumentRoot "D:/xxx/xxx"
<DocumentRoot "D:/xxx/xxx/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</DocumentRoot>
</VirtualHost>
标签可用具体属性,描述该节点功能,如(描述对文件夹的访问授权等) 和 细节:
- 标签名,内容名大小写敏感,如VirtualHost,ServerName。虽然window路径大小写不敏感,但是实际系统内部也是区分大小写的
- 文件路径应该是 ‘/’ ,而不是 ‘’ ,后者可能会被系统翻译成 escape 的意思
- window 没有那么多IP地址。但是可以写两种。①cmd -> 输入ipconfig -> 找到192.168开头的IPV4地址。② 127.0.0.1:80,127.0.0.8:81 也是一个地址,意思是换个本机地址,换个端口号(端口需要被监听到,应用程序监听到具体端口,才能对到某端口的请求做出反应,注意httpd.config 中的Listen 指令)
*httpd.config与httpd-vhosts.config 的关系 httpd.config 中有2行: # Virtual hosts Include conf/extra/httpd-vhosts.conf httpd.config 中引入了htttp-vhosts.config 语句,方便管理的意思
ip-based 和name-based ① ip-based 通过wampServer ,可以在一台window上运行多个站点。
您可以在电脑上运行多个WampServer实例,启动实例的命令中,可以指定不同的配置文件。
或者可以使用到ip-based,即:
运行一个WampServer实例,配置文件中指定2个不同ip Address 的 VirtualHost
比方说,127.0.0.1:80 和127.0.0.1:88 是2个IP地址。
② name-based 比方说,2个VirtualHost 是同一个IP地址,ServerName 分别是 a.com,b.com。在浏览器中输入这2个ServerName可以访问到各自VitualHost中指定的资源(但是同一个IP地址)。
这样管理一个IP地址就足够了
除了在httpd-vhosts.config 中写好虚拟节点外,还要配置一下电脑中的小DNS(C:\Windows\System32\drivers\etc\host)文件中配置下,具体ServerName 对应的IP地址
流程:
- 浏览器输入a.com
- 电脑中DNS 中 将a.com 映射到本机地址
- apache 监听到请求
- apache 根据请求头中的地址,筛选出一批匹配的VirtualHosts
- 再根据请求头中的HostName,再筛选出一批最匹配的vhosts,选里面的第一个
If a VirtualHost doesn’t specify a ServerName, a server name will be inherited from the base server configuration. If no server name was specified globally, one is detected at startup through reverse DNS resolution of the first listening address. In either case, this inherited server name will influence name-based virtual host resolution, so it is best to always explicitly list a ServerName in every name-based virtual host. 没有定义ServerName,就继承httpd.conf中的ServerName,httpd.conf中没有就找host文件中第一行映射,反获得hostName??
|