您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
web服务器下载(web服务器是啥啊)
虚拟主机,资源,位置web服务器下载(web服务器是啥啊)
发布时间:2020-12-06加入收藏来源:互联网点击:
进入当前虚拟主机后,到底采用哪个资源位置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 ];}
HTTP资源位置HTTPLoc是通过路径名path和匹配类型matchtype来作为其标识,路径名为配置中设置的名称,客户端请求的路径名通过匹配类型定义的匹配规则来跟设置的路径名进行匹配,如果符合匹配,则该请求使用此资源位置HTTPLoc。
匹配规则matchtype一般定义在配置文件中path数组里的第二项,分为如下几种:
精准匹配,使用等于号'='
前缀匹配,使用'^~'这两个符号
区分大小写的正则表达式匹配,使用'~'符号
不区分大小写的正则表达式匹配,使用'~*'这两个符号
通用匹配,使用'/'符号,如果没有其他匹配,任何请求都会匹配到
匹配的优先级顺序为: (location =) > (location 完整路径) > (location ^~ 路径) > (location ,* 正则顺序) > (location 部分起始路径) > (/)
eJet系统根据功能服务形式,对资源位置HTTPLoc定义了几种类型:Server、Proxy、FastCGI等,通常情况下,一个资源位置HTTPLoc只属于一种类型。
HTTP资源位置HTTPLoc都需要一个缺省的根目录,指向当前资源所在的根路径,客户端请求的路径都是相对于当前HTTPLoc下的root跟目录来定位文件资源的。对于Proxy模式,根目录一般充当缓存文件的根目录,即需要对Proxy代理请求回来的内容缓存时,都保存在当前HTTPLoc下的root目录中。
每个HTTPLoc下都会有缺省文件选项,可以配置多个缺省文件,一般设置为index.html等。使用缺省文件的情形是客户端发起的请求只有目录形式,如http://www.xxx.com/,这时该请求访问的是HTTPLoc的根目录,eJet系统会自动地依次寻找当前根目录下的各个缺省文件是否存在,如果存在就返回缺省文件给客户端。不过需要注意的是,eJet系统中这个流程是在设置DocURI时处理的。
HTTP资源位置如果是Proxy类型或FastCGI类型,则必须配置转发地址passurl,转发地址passurl一般都为绝对URL地址,含有指向其他服务器的domain域名,passurl的形式取决HTTPLoc资源类型。
反向代理(Reverse Proxy)就是将HTTPLoc的资源类型设置为Proxy模式,通过设置passurl指向要代理的远程服务器URL地址,来实现反向代理功能。在反向代理模式下,passurl可以是含有匹配结果变量的URL地址,这个地址指向的是待转发的下一个Origin服务器,匹配变量如果为1、1、2等数字变量,即表示基于正则表达式匹配路径时,把第一个或第二个匹配字符串作为passurl的一部分。当然passurl可以包含任何全局变量或配置变量,使用这些变量可以更灵活方便地处理转发数据。
在反向代理模式下,HTTPLoc资源位置下有一个cache开关,如果设置cache=on即打开Cache功能,则需要在当前HTTPLoc下设置cachefile缓存文件名。对于不同的请求地址,cachefile必须随着请求路径或参数的变化而变化,所以cachefile的取值设置需要采用HTTP变量,或者使用Script脚本来动态计算cachefile的取值。
HTTPLoc下一般都会部署Script脚本程序,包括rewrite、reply、try_files等,根据请求路径、请求参数、请求头、源地址等信息,决定当前资源位置是否需要重写、是否需要转移到其他地址处理等。
四. HTTP变量
4.1 HTTP变量的定义
HTTP变量是指在eJet Web服务器运行期间,能动态地访问HTTP请求、HTTP响应、HTTP全局管理等实例对象中的存储空间里的数据,或者访问HTTP配置文件的配置数据等等,针对这些存储空间的访问,而抽象出来的名称叫做HTTP变量。
变量的引用必须以开头,后跟变量名,如果变量名后面还有连续紧随的其他字符串,则需用{}来包括住变量名,其基本格式为:开头,后跟变量名,如果变量名后面还有连续紧随的其他字符串,则需用来包括住变量名,其基本格式为:变量名称, {变量名称},变量名称,{ 变量名称 },等等
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |