HTTP 协议中的 host

2021年09月16日 阅读数:3
这篇文章主要向大家介绍HTTP 协议中的 host,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

http请求头host字段表示目标服务器域名。咱们知道通常服务器都只会有一个ip地址,而一个ip地址能够有多个域名,好比咱们有www.qiniu.comwww.taobao.comwww.jd.com几个域名,在域名供应商那经过A记录或者CNAME记录的方式记录的方式与服务器的ip地址关联,那么经过任何一个域名访问最终解析到的都是该ipweb

若是一个服务器只部署一个站点是否是很浪费资源,tomcat上搭建站点时,能够给每一个域名指定一个访问目录,而后每次访问都会根据不一样的Host的信息请求到不一样的站点上面,配置/usr/local/tomcat/conf/目录server.xml以下:apache

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8006" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
<Listener className="org.apache.catalina.core.AprLifecycleListener"/>
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
 type="org.apache.catalina.UserDatabase"
 description="User database that can be updated and saved"
 factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
 pathname="conf/tomcat-users.xml"/>
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080"
 protocol="HTTP/1.1"
 connectionTimeout="20000"
 redirectPort="8443"
 maxThreads="1000"
 minSpareThreads="20"
 acceptCount="1000"
 maxHttpHeaderSize="65536"
 debug="0"
 disableUploadTimeout="true"
 useBodyEncodingForURI="true"
 enableLookups="false"
 URIEncoding="UTF-8"/>
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
  resourceName="UserDatabase"/>
</Realm>
// Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载全部这个目录下的应用。若是你想要修改这个默认目录,能够在conf下的server.xml文件里修改Host标签里的appBase值。
    <Host name="www.qiniu.com" appBase="/data/wwwroot/qiniuwebapp" unpackWARs="true" autoDeploy="true">
        <Context path="" docBase="/data/wwwroot/qiniuwebapp" debug="0" reloadable="false" crossContext="true"/>
        // path:是访问时的根地址,表示访问的路径,能够自定义,如上述例子中,访问该应用程序地址以下:http://localhost:8080/;
        // docbase:表示应用程序的路径,docBase能够使用绝对路径,也能够使用相对路径,相对路径相对于webapps ;
        // reloadable:表示能够在运行时在classes与lib文件夹下自动加载类包。这个属性在开发阶段一般都设为true,方便开发;在发布阶段应该设置为false,提升应用程序的访问速度 ;
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
        prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    </Host>
        <Host name="www.taobao.com" appBase="/data/wwwroot/taobaowebapp" unpackWARs="true" autoDeploy="true">
        <Context path="" docBase="/data/wwwroot/taobaowebapp" debug="0" reloadable="false" crossContext="true"/>
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
        prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    </Host>
        <Host name="www.jb.com" appBase="/data/wwwroot/jbwebapp" unpackWARs="true" autoDeploy="true">
        <Context path="" docBase="/data/wwwroot/jbwebapp" debug="0" reloadable="false" crossContext="true"/>
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
        prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    </Host>
</Engine>
</Service>
</Server>