文件/etc/apache2/sites-available/000-default.conf
# Ensure that Apache listens on port 80
Listen 80
<VirtualHost *:80>
DocumentRoot "/www/example1"
ServerName www.example.com
# Other directives here
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/www/example2"
ServerName www.example.org
# Other directives here
</VirtualHost>
二进制apache2
将会收听,例如listen(listenFD, 5)
。
listenFD
应该是这样的,
retval = bind(listenFD, (struct sockaddr *) &servaddr, sizeof(servaddr));
其中servaddr.sin_port = htons(80);
使用给定的accept()
调用语法,
connfd = accept(listenFD, (struct sockaddr *) &cliaddr, &clilen);
问题:
httpd
服务器是否决定在DocumentRoot
呼叫后选择相应的虚拟主机accept()
? 虚拟主机选择应用层逻辑吗?
答案 0 :(得分:3)
在服务器解析Host:
HTTP头字段之前,无法解析虚拟主机,这显然是在accept()
之后以及在连接的套接字上读取了一些数据之后。