架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4372|回复: 0

nginx fastcgi_pass 协议简单介绍和测试

[复制链接]
发表于 2021-11-16 22:16:20 | 显示全部楼层 |阅读模式
nginx 一般是把请求发fastcgi管理进程处理,以 php 站点为例,php-fpm 是实现了Fastcgi协议,一个管理php-cgi的管理程序。下面是流程图:

QQ截图20211116091702.jpg

CGI 全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。

cgi 的弊端:当每一个请求进入的时候,cgi都会fork一个新的进程,然后以php为例,每个请求都要耗费相当大的内存,这样一来,并发起来,完全就会GG。

为了解决这个问题,于是产生了fastCgi。

FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算,即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。
测试

在 D:\dev_tools\nginx-1.20.0\html\php 目录下面新建一个 php 文件,主要防止 nginx 找不到文件报 404 错误,如下:



nginx fastcgi_pass 配置如下:



nginx fastcgi_pass 传输的数据需要根据 FastCGI 协议进行解析,有兴趣的可以去了解,我这里使用 sokit 开启一个 tcp 监听用来简单接收,尝试使用浏览器访问:http://127.0.0.1:22229/itsvse.php,如下图:

QQ截图20211116221055.jpg

22:06:07 DAT ---> [TCP] 127.0.0.1:1032 <1136> .....................B....QUERY_STRING..REQUEST_METHODGET..CONTENT_TYPE..CONTENT_LENGTH..SCRIPT_NAME/itsvse.php..REQUEST_URI/itsvse.php..DOCUMENT_URI/itsvse.php."DOCUMENT_ROOTD:/dev_tools/nginx-1.20.0/html/php..SERVER_PROTOCOLHTTP/1.1..REQUEST_SCHEMEhttp..GATEWAY_INTERFACECGI/1.1..SERVER_SOFTWAREnginx/1.20.0..REMOTE_ADDR127.0.0.1..REMOTE_PORT1025..SERVER_ADDR127.0.0.1..SERVER_PORT22229..SERVER_NAME..REDIRECT_STATUS200..HTTP_HOST127.0.0.1:22229..HTTP_CONNECTIONkeep-alive..HTTP_CACHE_CONTROLmax-age=0.@HTTP_SEC_CH_UA"Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"..HTTP_SEC_CH_UA_MOBILE?0..HTTP_UPGRADE_INSECURE_REQUESTS1.sHTTP_USER_AGENTMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36.....HTTP_ACCEPTtext/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9..HTTP_SEC_FETCH_SITEnone..HTTP_SEC_FETCH_MODEnavigate..HTTP_SEC_FETCH_USER?1..HTTP_SEC_FETCH_DESTdocument..HTTP_ACCEPT_ENCODINGgzip, deflate, br..HTTP_ACCEPT_LANGUAGEzh-CN,zh;q=0.9,en;q=0.8......................
(完)




上一篇:基于 Debian(docker 镜像)安装 curl
下一篇:E45: 'readonly' option is set (add ! to override)
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-26 15:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表