所谓的主机头的叫法起自IIS中对域名绑定的功能,一般的web服务器一个ip地址的80端口只能正确对应一个网站,处理一个域名的访问请求。但是我们可以通过绑定主机头,在同一个ip和端口上,将不同的网站空间对应不同的域名,以连接请求中的域名字段来分发和应答正确的对应空间的文件执行结果。

举个例子来说,一台服务器ip地址为192.168.1.10,有两个域名和对应的空间在这台服务器上,使用的都是192.168.1.1080端口来提供服务。如果只是简单的将两个域名AB的域名记录解析到这个ip地址,那么web服务器在收到任何请求时反馈的都会是同一个网站的信息,这显然达不到要求。这时我们可以使用主机头绑定域名AB到他们对应的空间文件夹CD。当含有域名Aweb请求信息到达192.168.1.10时,web服务器将执行它对应的空间C中的首页文件,并返回给客户端,含有域名Bweb请求信息同理,只不过解释的是空间D的文件。所以在使用主机头绑定功能后就不能使用ip地址访问其上的任何网站了,因为请求信息中不存在域名信息,所以会出错。

因此,为了防止域名解析恶意指向,我们需要禁止web服务器中默认的空主机头,操作如下:

1.apache环境中:

vi /etc/httpd/conf/httpd.conf
编辑配置文件,在你的站点配置之前再增加一个站点(红色字体部分是我们要增加的,蓝色字体部分代表你正在使用的站点配置)

NameVirtualHost *

<VirtualHost *:80>

ServerAdmin yourmail#mail.com

DocumentRoot /error

ServerName abc.com

</VirtualHost>

<VirtualHost *:80>

ServerAdmin yourmail#mail.com

DocumentRoot "你的站点路径"

ServerName yourWebsite.com

ServerAlias *.yourWebsite.com

</VirtualHost>

2.Nginx环境中:

vi /usr/local/nginx/conf/nginx.conf    #配置文件

找到server,添加下面这两行:

 listen 80 default;    #default代表默认虚拟主机

server_name _;

例如:

 server {

listen 80 default;

 server_name _;

return 500;   #返回500错误信息

}

还可以把这些空的流量转向到某一个网站,如下设置:

 server {

listen 80 default;

 server_name _;

rewrite ^(.*) http://某个网址permanent;    #页面重定向

}

Windows环境中设置IIS主机头

运行“inetmgr”进入IIS管理器,在站点属性的网站标签页中,点开网站标识”→“高级,选中此网站的多个标识中的内容进行编辑,在主机头那一项中填入此站点相应的域名,然后点击确认并重启服务即可

Tomcat虚拟主机配置方案(域名解析)For Windows/Linux

一、打开tomcat安装目录下conf/server.xml这个文件

server.xml文档中找到

</Engine>

</Service>

接着添加上面添加以下内容(暂时先说分为三种方式)

第一种:

<Host name="www.yovole.com"  debug="0"  appBase="webapps"  unpackWARs="true"  autoDeploy="true"  xmlValidation="false"  xmlNamespaceAware="false">

<Context path=""  docBase="www"  debug="0"  reloadable="true" crossContext="true"/>

<Logger  className="org.apache.catalina.logger.FileLogger" directory="logs"  prefix="www_5sai_log." suffix=".txt"

timestamp="true"/>

</Host>

以上的内容就是在Tomcatwebapps目录下新建一个www文件夹作为www.yovole.com这个域名的主目录

第二种:

<Host name="www.yovole.com"  debug="0"  appBase="C:\\test\www"  unpackWARs="true"  autoDeploy="true"> 

<Context path="" docBase="."/>

<Valve  className="org.apache.catalina.valves.AccessLogValve" directory="logs"  prefix="www_yovole_access_log."  suffix=".txt" pattern="common"   resolveHosts="false"/>

<Logger  className="org.apache.catalina.logger.FileLogger"

directory="logs"  prefix="www_yovole_log."  suffix=".txt"  timestamp="true"/>

</Host>

以上内容的意思就是在Ctest文件夹下面建立一个www文件夹作为www.yovole.com这个

域名的主目录

第三种,如果是linux系统的/var/www作为www.yovole.com这个域名的主目录的话内容如下:

<Host name="www.yovole.com"  debug="0"  appBase="/var/www"  unpackWARs="true"  autoDeploy="true"> 

<Context path="" docBase="."/>

<Valve  className="org.apache.catalina.valves.AccessLogValve"

directory="logs"  prefix="www_yovole_access_log."  suffix=".txt"  pattern="common"  resolveHosts="false"/>

<Logger  className="org.apache.catalina.logger.FileLogger"

directory="logs"  prefix="www_yovole_log."  suffix=".txt"  timestamp="true"/> 

</Host>

再补充一种

<Host name="www.yovole.cn"  debug="0"  unpackWARs="true">

 <Valve  className="org.apache.catalina.valves.AccessLogValve"

directory="/var/log/tomcat"  prefix="www_yovole_access_log."  suffix=".txt"

pattern="common"/>

<Logger  className="org.apache.catalina.logger.FileLogger"

directory="/var/log/tomcat"  prefix="www_yovole_log." suffix=".txt"

timestamp="true"/>

<Context  path=""  docBase="/var/www"  debug="0"  reloadable="true"/>

</Host>

域名www.yovole.cn的主目录为/var/www该站点的所有访问LOG放在/ar/log/tomcat里面