web服务器的域名格式(超详解读web服务器知识)(14/21)

来源:国外服务器 在您之前已被浏览:1 次
导读:目前正在解读《web服务器的域名格式(超详解读web服务器知识)(14/21)》的相关信息,《web服务器的域名格式(超详解读web服务器知识)(14/21)》是由用户自行发布的知识型内容!下面请观看由(国外主机 - www.2bp.net)用户发布《web服务器的域名格式(超详解读web服务器知识)(14/21)》的详细说明。
笨笨网美国主机,w ww.2 b p .n e t

其他情形就按照代理响应来处理

复制所有的响应状态码和响应头到源HTTPMsg中,并将响应HTTPCon的接收缓冲区rcvstream数据实时转发到源HTTPCon中,同样地,HTTPCon中没有发送不成功的数据,转存到源HTTPMsg中的res_body_stream中临时缓存起来。每次当源HTTPCon可写就绪、或代理HTTPCon有数据可读并读取成功后,都会调用http_proxy_cli_send,优先发送的是堆积在res_body_stream中的数据。

其他后续流程类似请求消息的实时转发。

十. FastCGI机制和启动PHP的流程

10.1 FastCGI基本信息

FastCGI是CGI(Common Gateway Interface)的开放式扩展规范,其技术规范见网址 http://www.mit.edu/~yandros/doc/specs/fcgi-spec.html

对静态HTML页面中嵌入动态脚本程序的内容,如PHP、ASP等,需要由特定的脚本解释器来解释运行,并动态生成新的页面,这个过程需要eJet Web服务器和脚本程序解释器之间有一个数据交互接口,这个接口就是CGI接口,考虑到性能局限,早期的独立进程模式的CGI接口发展成FastCGI接口规范。习惯地,我们把解释器称之为CGI服务器。

使用CGI接口规范的页面脚本程序可以使用任何支持标准输入STDIN、标准输出STDOUT、环境变量的编程语言来编写,如PHP、Perl、Python、TCL等。在传统CGI规范的fork-and-execute模式中,Web服务器会为每个HTTP请求,创建一个新进程、解释执行、返回响应、销毁进程,这是个很重的工作流程。

FastCGI对CGI这种重模式进行了简化,脚本解释器和Web服务器之间的交互,通过Unix Socket或TCP协议来实现,Web服务器收到需要解释执行的HTTP请求时,建立并维持通信连接到CGI服务器,按照FastCGI通信规范发送请求,并接收响应,这个流程相比CGI模式,大大提升了性能和并发处理能力。

PHP解释器名称为php-fpm(php FastCGI Processor Manager),作为FastCGI通信服务器监听来自Web服务器的连接请求,并接收连接上的数据,进行解析、解释执行后,返回响应给Web服务器端。php-fpm的配置项中,启动监听服务:

; The address on which to accept FastCGI requests.; Valid syntaxes are:; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on; a specific port;; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on; a specific port;; 'port' - to listen on a TCP socket to all addresses; (IPv6 and IPv4-mapped) on a specific port;; '/path/to/unix/socket' - to listen on a unix socket.; Note: This value is mandatory.listen = /run/php-fpm/www.sock;listen = 9000

10.2 eJet如何启用FastCGI

eJet收到客户端的HTTP请求并创建HTTPMsg和完成HTTPMsg实例化后,根据资源位置HTTPLoc是否将资源类型设置为FastCGI、并且设置了指向CGI服务器地址的passurl,如果都设置这两个参数,则当前请求会被当做FastCGI请求转发给CGI服务器。

启用FastCGI的参数配置如下:

location = { type = fastcgi; path = [ ".(php|php?)$", '~*']; passurl = fastcgi://127.0.0.1:9000; #passurl = unix:/run/php-fpm/www.sock; index = [ index.php ]; root = /data/wwwroot/php;}

只要是请求DocURL中路径名称是以.php或.php5等结尾,当前请求都会被FastCGI转发。

在获取转发URL地址时,是复制配置中的passurl地址,即CGI服务器地址,不能把HTTP请求中的路径和query参数信息添加在这个转发URL后面。转发地址有两种形态:

采用TCP协议的CGI服务器地址,以fastcgi://打头,后跟IP地址和端口,或域名和端口;

采用Unix Socket的CGI服务器地址,以unix:打头,后跟Unix Socket的路径文件名。

passurl地址指向CGI服务器,eJet服务器可以支持很多个CGI服务器。

eJet获取到FastCGI转发地址后,根据该地址创建或打开CGI服务器FcgiSrv对象实例,建立TCP连接或Unix Socket连接到该服务器的FcgiCon实例,为当前HTTP请求创建FcgiMsg消息实例,将HTTP请求信息按照FastCGI规范封装到FcgiMsg中,并启动发送流程,将请求发送到CGI服务器。

10.3 FastCGI的通信规范

FastCGI通信依赖于C/S模式的可靠的流式的连接,协议定义了十种通信PDU(Protocol Data Unit)类型,每个PDU都由两部分组成:一部分是FastCGI Header头部,另一部分是FastCGI消息体,FastCGI的PDU是严格8字节对齐,PDU总长度不足8的倍数,需要添加Padding补齐8字节对齐。FastCGI的PDU头格式如下:

笨笨网美国主机,w ww.2 b p .n e t
提醒:《web服务器的域名格式(超详解读web服务器知识)(14/21)》最后刷新时间 2025-03-21 11:16:08,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《web服务器的域名格式(超详解读web服务器知识)(14/21)》该内容的真实性请自行鉴别。