您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
web服务器下载(web服务器是啥啊)
虚拟主机,资源,位置web服务器下载(web服务器是啥啊)
发布时间:2020-12-06加入收藏来源:互联网点击:
这样,"cache file"对象的内容就是一段脚本程序,需要在解释执行到这里时,才真正具有实际数据。
三. eJet资源管理架构
3.1 三层资源定位架构
eJet Web服务器的资源管理结构分成三层:
HTTP监听服务HTTPListen - 对应的是监听本地IP地址和端口后的TCP连接
HTTP虚拟主机HTTPHost - 对应的是请求主机名称domain
HTTP资源位置HTTPLoc - 对应的是主机下的各个资源目录
一个eJet Web服务器可以启动一个到多个监听服务HTTPListen,一个监听服务下可以配置一个到多个HTTP虚拟主机,一个虚拟主机下可以配置多个资源位置HTTPLoc。这里的‘多个’没有数量限制,取决于系统的物理和内核资源限制。
3.2 HTTP监听服务 - HTTPListen
HTTP监听服务HTTPListen是指eJet Web服务器在启动时,需要绑定本地某个服务器IP地址和某个端口后,启动TCP监听服务,等候接收客户端发起TCP连接和HTTP请求数据,每个接受的HTTPCon连接一定属于某个HTTP监听服务HTTPListen。严格来说,HTTPListen负责接受HTTPCon连接,并将请求数据存储到HTTPCon的接收缓冲区,所以监听服务对应的是TC连接资源管理,即对应的是请求资源的domain和端口。
HTTP监听服务的配置信息格式参考如下:
listen = { local ip = *; #192.168.1.151 port = 443; forward proxy = on; ssl = on; ssl certificate = cert.pem; ssl private key = cert.key; ssl ca certificate = cacert.pem; request process library = reqhandle.so script = { #reply 302 https://ke.test.ejetsrv.com:8443$request_uri; addResHeader X-Nat-IP $remote_addr; } host = {.....} host = {.....} host = {.....}}
一台物理服务器可以安装多个网卡,每个网卡配置一个独立IP地址,HTTP监听服务可以监听某一个IP地址上的某个端口,也可以监听所有IP地址上的同一个端口。能启动监听服务的端口数量理论上是65536个,其中小于1024的端口需要有root超户权限才能监听。
HTTP监听服务HTTPListen依赖于底层ePump框架的eptcp_mlisten接口函数,通过该接口,让每一个epump监听线程都去监听指定IP地址和端口上的连接请求和数据请求服务。对于支持REUSEPORT的操作系统内核,大量客户端发起的并发连接,将会通过内核accept系统调用均衡地分摊到各epump线程处理,对于不支持REUSEPORT的操作系统,ePump框架负责大并发连接在各监听线程间的负载均衡。
HTTP监听服务HTTPListen可以设置当前监听为需要SSL的安全连接,并配置SSL握手所需的私钥、证书等。配置为SSL安全连接监听服务后,客户端发起的HTTP请求都必须是以https://开头的URL。
在HTTP监听服务HTTPListen里,可以设置Script脚本程序,执行各种针对请求数据进行预判断和预处理的指令。这些脚本程序的执行时机是在收到完整的HTTP请求头后进行的。
eJet系统提供了动态库回调机制,使用动态库回调,既可以扩展eJet Web服务器能力,也可以将小型应用系统附着在eJet Web服务器上,处理客户端发起的HTTP请求。
HTTP监听服务HTTPListen下可管理多个虚拟主机HTTPHost,采用主机名称为索引主键的hashtab来管理下属的虚拟主机表。当当前监听服务的端口收到TCP请求和数据后,根据Host请求头的主机名称,来精确匹配定位出该请求的HTTP虚拟主机HTTPHost。
3.3 HTTP虚拟主机 - HTTPHost
在HTTPListen监听服务下,可以配置多个虚拟主机,虚拟主机HTTPHost是eJet Web服务器资源管理体系的第二层,将HTTPCon缓冲区的数据进行解析,创建HTTPMsg来保存解析后的HTTP请求数据,HTTP协议规范中,请求头Host携带的值内容是URL中domain信息,所以HTTP虚拟主机HTTPHost,对应的就是请求域名,或者就是一个网站。一个监听服务HTTPListen下可以寄宿大量的通过虚拟主机HTTPHost来管理的网站。
HTTP虚拟主机的配置信息格式参考如下:
host = { host name = *; #www.ejetsrv.com type = server | proxy | fastcgi; gzip = on; ssl certificate = cert.pem; ssl private key = cert.key; ssl ca certificate = cacert.pem; script = { #reply 302 https://ke.test.ejetsrv.com:8443$request_uri; addResHeader X-Nat-IP $remote_addr; } error page = { 400 = 400.html; 504 = 504.html; root = /opt/ejet/errpage; } root = /home/hzke/sysdoc; location = {...} location = {...} location = {...}}
HTTP虚拟主机的名称一般是域名格式,即多级名称体系,包含顶级域名、二级域名、三级域名等,通过DNS系统,将该域名解析到当前eJet Web服务器所在的IP地址上,如果在该IP地址上启动HTTPListen服务,那么所有使用该域名的请求都会指向到对应的HTTPHost虚拟主机。
eJet系统根据功能服务形式,对虚拟主机定义了几种类型:Server、Proxy、FastCGI等,这几种类型可以同时并存,可或在一起。
虚拟主机HTTPHost下可以设置资源的缺省目录,下属的资源位置HTTPLoc都可以复用虚拟主机的缺省目录。
如果当前虚拟主机HTTPHost的上级监听服务是建立在安全连接SSL上,那么在有多个网站即多个虚拟主机情况下,需要为每个网站配置属于该网站域名的证书、私钥等安全身份标识信息,客户端在向同一个监听服务发送请求后,采用TLS SNI机制和eJet中实现的SSL域名选择回调,来完成域名和证书的选择。
HTTPHost虚拟主机下可以设置Script脚本程序,虚拟主机下的脚本程序被执行时机是在创建HTTPMsg实例,并设置完DocURI后开始执行资源位置实例化流程,在该流程中分别执行HTTPListen的Script脚本、HTTPHost的Script脚本、HTTPLoc的Script脚本。脚本程序的执行按照上述优先级来进行,使用脚本程序的指令来预处理HTTP请求的各类数据。
一个虚拟主机HTTPHost下可以配置多个资源位置HTTPLoc,代表访问当前域名下的不同目录。虚拟主机HTTPHost采用多种方式管理下属的资源位置HTTPLoc实例,主要包括三种:
精确匹配请求路径的虚拟主机表 - 以请求路径名称为索引的资源位置索引表
对请求路径前缀匹配的虚拟主机表 - 以请求路径前缀名称为索引的资源位置字典树
对请求路径进行正则表达式运算的虚拟主机表 - 对正则表达式字符串为索引建立的资源位置列表
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |