web服务器下载 web服务器是啥啊( 五 )


虚拟主机HTTPHost下可以设置资源的缺省目录 , 下属的资源位置HTTPLoc都可以复用虚拟主机的缺省目录 。
如果当前虚拟主机HTTPHost的上级监听服务是建立在安全连接SSL上 , 那么在有多个网站即多个虚拟主机情况下 , 需要为每个网站配置属于该网站域名的证书、私钥等安全身份标识信息 , 客户端在向同一个监听服务发送请求后 , 采用TLS SNI机制和eJet中实现的SSL域名选择回调 , 来完成域名和证书的选择 。
HTTPHost虚拟主机下可以设置Script脚本程序 , 虚拟主机下的脚本程序被执行时机是在创建HTTPMsg实例 , 并设置完DocURI后开始执行资源位置实例化流程 , 在该流程中分别执行HTTPListen的Script脚本、HTTPHost的Script脚本、HTTPLoc的Script脚本 。脚本程序的执行按照上述优先级来进行 , 使用脚本程序的指令来预处理HTTP请求的各类数据 。
一个虚拟主机HTTPHost下可以配置多个资源位置HTTPLoc , 代表访问当前域名下的不同目录 。虚拟主机HTTPHost采用多种方式管理下属的资源位置HTTPLoc实例 , 主要包括三种:

  • 精确匹配请求路径的虚拟主机表 – 以请求路径名称为索引的资源位置索引表
  • 对请求路径前缀匹配的虚拟主机表 – 以请求路径前缀名称为索引的资源位置字典树
  • 对请求路径进行正则表达式运算的虚拟主机表 – 对正则表达式字符串为索引建立的资源位置列表
进入当前虚拟主机后 , 到底采用哪个资源位置HTTPLoc , 匹配规则和顺序是按照上述列表的排序来进行的 , 首先根据HTTP请求的路径名在资源位置索引表中精准匹配 , 如果没有 , 则对请求路径名的前缀在资源位置字典树中进行匹配检索 , 如果还没有匹配上 , 最后对资源位置列表中的每个HTTPLoc , 利用其正则表达式字符串 , 去匹配当前请求路径名 , 如果还是没有匹配的资源位置HTTPLoc , 那么使用当前虚拟主机的缺省资源位置 。
3.4 HTTP资源位置 – HTTPLoc HTTP资源位置HTTPLoc代表的是请求资源在某个监听服务下的某个虚拟主机里的目录位置 , HTTPLoc代表的是请求路径 , 根据HTTPMsg中的客户端请求数据 , 最终基于各种资源匹配规则 , 找到HTTPListen、HTTPHost、HTTPLoc后 , 基本确定了当前请求的资源位置、处理方式等 。一个网站对应的虚拟主机下 , 可以有多种功能和资源类别的资源位置HTTPLoc , 如图像文件放置在image为根的目录下 , PHP文件需要采用FastCGI转发给php-fpm解释器等 。
HTTP资源位置的配置信息格式参考如下:
location = {    type = server;    path = [ "\.(h|c|apk|gif|jpg|jpeg|png|bmp|ico|swf|js|css)$", "~*" ];    root = /opt/ejet/httpdoc;    index = [ index.html, index.htm ];    expires = 30D;    cache_file = <script>           if ($request_uri ~* 'laoke')               return "${host_name}_${server_port}${req_path_only}${req_file_only}";           else if (!-f $root$request_path) {               return "$root$request_path is not a regular file";           } else if (!-x $root$request_path) {               return "$root$request_path is not an executable file";           } else               return "${request_header[host]}${req_path_only}else.html";         </script>;}location = {    path = [ '^/view/([0-9A-Fa-f]{32})$', '~*' ];    type = proxy;    passurl = http://cdn.ejetsrv.com/view/$1;    root = /opt/cache/;    cache = on;    cache file = /opt/cache/${request_header[host]}/view/$1;}location = {    type = fastcgi;    path = [ "\.(php|php?)$", '~*'];    passurl = fastcgi://localhost:9000;    index = [ index.php ];    root = /opt/ejet/php;}location = {    path = [ '/' ];    type = server;    script = {        try_files $uri $uri/ /index.php?$query_string;    };    index = [ index.php, index.html, index.htm ];}


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: