T086学习网 | 站长学院 | 技术文档 | 成语 | 歇后语 | 帝国时代 | 代码收藏 | IP地址查询 | 生活百科 | 生日密码 | CSS压缩 | 用户评论 | 欣欣百宝箱

Apache FAQ:Apache常见问题

【 网络作者:Johnny 更新时间:2006-11-05 | 字体:
[导读]Apache的默认虚拟主机 当一个请求到达的时候,服务器会首先检查它是否使用了一个能和NameVirtualHost相 匹配的IP地址。如果能够匹配, 它就会查找每个与这个IP地址相对应的<VirtualHost>配置段, 并尝试找出一...

Apache的默认虚拟主机

当一个请求到达的时候,服务器会首先检查它是否使用了一个能和NameVirtualHost相 匹配的IP地址。如果能够匹配, 它就会查找每个与这个IP地址相对应的<VirtualHost>配置段, 并尝试找出一个ServerName或ServerAlias配置项与请求的主机名相同的。 如果找到了,它就会使用这个服务器的配置。 否则,将使用符合这个IP地址的第一个列出的虚拟主机。

综上所述,第一个列出的虚拟主机在这里充当了默认虚拟主机的角色


当一个IP地址与NameVirtualHost指令中的配置相符的时候, 主服务器中的DocumentRoot将永远不会被用到。 所以,如果你想做一个处理不对应任何一个特定虚拟主机的请求的特殊配置的话, 你只要简单的把它的配置放到<VirtualHost>配置段中, 并把它放到配置文件的最前面就可以了。

由此可见,主服务器也是建立默认站点的方法


VirtualHost的参数必须 与NameVirtualHost的参数相符

(比如说,一个IP地址,或是*代表的所有地址)不论如何,当您的IP地址无法确定的时候,使用* 是很方便的——比如说,您的ISP给您配置的是动态IP地址,而您有 使用了某种动态域名解析系统时。因为*匹配任何IP 地址,所以在这样的情况下,不论IP地址如何变化,您都不需要另 外进行配置。

但是,如果你想为不同的IP 地址或是端口提供不同的内容时,这样就不能使用*了


为所有端口配置 _default_虚拟主机

这样配置,以捕获任何指向没指定的IP地址和端口的请求。比如 说:一个没被任何虚拟主机使用的地址/端口对。 服务器配置
<VirtualHost _default_:*>
DocumentRoot /www/default
</VirtualHost>

使用这样一个使用通配符端口的默认虚拟主机可以有效的防止请求被主 服务器接收。

如果一个地址/端口对已经被一个基于域名的虚拟主机使用,那么默认虚 拟主机决不会处理发向这个地址/端口的请求。如果一个请求的 Host:头中包含未知信息,或者干脆就没有,那么它会被第一 个基于域名的虚拟主机(就是在配置文件中首先出现的使用了那个地址/端 口对的虚拟主机)处理。

您可以用AliasMatch或 RewriteRule来重写任何 请求,使它指向一个简单信息页面(a single information page)(或脚 本)。

当使用基于IP的虚拟主机时,特殊的名称_default_可以在没有匹配上其它列出的虚拟主机的情况下作为匹配任何IP地址的虚拟主机。在没有进行_default_虚拟主机的设定时,在没有IP与请求匹配的情况下,将使用“主服务器”(包括所有在虚拟主机配置段之外的配置)的配置。(但请注意:任何匹配NameVirtualHost指令的IP地址既不会使用"main"服务器配置,也不会使用_default_虚拟主机的配置。


没有主机名

为什么启动Apache的时候提示:"Could not determine the server's fully qualified domain name, using *.*.*.* for ServerName“

If no ServerName is specified, then the server attempts to deduce the hostname by performing a reverse lookup on the IP address. If no port is specified in the ServerName, then the server will use the port from the incoming request. For optimal reliability and predictability, you should specify an explicit hostname and port using the ServerName directive.
如果ServerName没有指定,那么服务器将尝试执行一个反向的IP lookup来推断主机名hostname. 如果

解决方法1: 在配置文件里增加

 ServerName <server_name_or_ip_addr>

还有,你可能需要在/etc/hosts 为这个servername配置ip,如果你没有安装bind等dns服务的话

解决方法2:

#echo ns.vhostman.net > /etc/hostname


#/bin/hostname -F /etc/hostname

注意/etc/hostname应该是短的主机名,FQDN应该在 /etc/hosts中配置

端口占用

(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs

可能是启动了apache 1.x了,现停掉httpd,然后在启动apache2

 

作者:Johnny   更新日期:2005-11-12

  • 转载请注明来源:IT学习网 网址:http://www.t086.com/ 向您的朋友推荐此文章
  • 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系我们,我们会尽快予以更正。
更多
留言建议ASP探针PHP探针站长Enjoy的Blog
© 2017 T086学习网 - T086.com(原itlearner.com)
RunTime:9.94ms QueryTime:7