- 配置整合Win+Apache+PHP+MySQL+Tc...
- 动态网页制作PHP常用的正则表达式
- PHP实例:上传多个图片并校验的代...
- PHP5中新增加的日期(date)函数的常...
- PHP实例:实现给上传图片加水印图案
- PHP 开发中的中文编码问题
- 用PHP程序直接调用文本文件内容实...
- PHP初学者:配置Apache服务器并且...
- 详细学习PHP中对文件和目录的操作...
- 确保PHP安全,不能违反的四条安全...
- 怎样在PHP 中运用 SimpleXML 处理...
- PHP5.2+APACHE2.2+BugFree1.0的安...
- PHP正式进入IIS微软与Zend携手推动...
- PHP5中PDO的简单使用
- Web服务器IIS6的PHP最佳配置方法
# Ensure that Apache listens on port 80
Listen 80
# Listen for virtual host requests on all IP addresses
NameVirtualHost *
<VirtualHost *>
DocumentRoot /www/ghq1
ServerName www.ghq1.com
# Other directives here
</VirtualHost>
<VirtualHost *>
DocumentRoot /www/ghq2
ServerName www.ghq2.org
# Other directives here
</VirtualHost>
因为*(星号)匹配所有的地址,所以主服务器不接收任何请求。因为 www.ghq1.com首先出现在配置文件中,所以它拥有最高优先级,可以认为是默认或首要服务器。这意味着如果一个接受的请求不能与某个ServerName指令相匹配, 它将会由第一个VirtualHost所伺服。
当我们的IP地址无法确定的时候,使用*是很方便的--比如说, ISP给我们配置的是动态IP地址(如ADSL拨号上网),而我们有使用了某种动态域名解析系统时。因为*匹配任何IP 地址,所以在这样的情况下,不论IP地址如何变化,我们都不需要另外进行配置。上述配置就是我们在绝大多数情况下使用基于域名的虚拟主机时将要用到的。
关于DNS和Apache
本文档的涵义一言以蔽之就是:不要让Apache在解析配置文件的时候用到DNS。 如果Apache在解析配置文件时用到了DNS,您的服务器就会发生可靠性的问题(也可能根本无法启动), 或者遭致拒绝(偷窃)服务攻击(包括用户可以从其他用户那里偷窃点击)。
一个简单示例
拒绝服务
"main server"地址
避免这些问题的小技巧
附录:进一步的提示
一个简单示例
<VirtualHost www.abc.dom>
ServerAdmin webgirl@abc.dom
DocumentRoot /www/abc
</VirtualHost>
为了让Apache功能正常,一个虚拟主机绝对需要以下两部分的信息: ServerName和与服务器对应的至少一个IP地址。 这个示例没有包括IP地址,于是Apache必须用DNS来查询www.abc.dom的地址。 如果在某些不可预料的情况下,当您的服务器解析配置文件时没有得到DNS的支持, 那么这个虚拟主机 将不会被配置。 它将不会对任何请求作出反应。(在Apache的1.2版本之前,服务器甚至无法启动)。
假设www.abc.dom的IP地址是10.0.0.1。那么看看以下这个配置片断:
<VirtualHost 10.0.0.1>
ServerAdmin webgirl@abc.dom
DocumentRoot /www/abc
</VirtualHost>
现在Apache需要DNS对这个虚拟主机进行反向域名解析来确定ServerName。 如果反向解析失败,那么这将导致这个虚拟主机部分功能丧失。 (在Apache的1.2版本之前,服务器将不能启动)。如果虚拟主机是基于域名的, 它将完全不能使用,但如果它是基于IP的,那么它将很有可能工作。 然而,如果Apache不得不为一个已经包含了服务器域名的服务器产生一个完整的URL, 那么它将可能产生一个无效的URL。
