所谓的主机头的叫法起自IIS中对域名绑定的功能,一般的web服务器一个ip地址的80端口只能正确对应一个网站,处理一个域名的访问请求。但是我们可以通过绑定主机头,在同一个ip和端口上,将不同的网站空间对应不同的域名,以连接请求中的域名字段来分发和应答正确的对应空间的文件执行结果。
举个例子来说,一台服务器ip地址为192.168.1.10,有两个域名和对应的空间在这台服务器上,使用的都是192.168.1.10的80端口来提供服务。如果只是简单的将两个域名A和B的域名记录解析到这个ip地址,那么web服务器在收到任何请求时反馈的都会是同一个网站的信息,这显然达不到要求。这时我们可以使用主机头绑定域名A和B到他们对应的空间文件夹C和D。当含有域名A的web请求信息到达192.168.1.10时,web服务器将执行它对应的空间C中的首页文件,并返回给客户端,含有域名B的web请求信息同理,只不过解释的是空间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> 以上的内容就是在Tomcat的webapps目录下新建一个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> 以上内容的意思就是在C盘test文件夹下面建立一个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里面 |