gpt4 book ai didi

nginx - webserver和cgi进程如何相互通信?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:45:32 27 4
gpt4 key购买 nike

我想了解webserver(例如:nginx)和cgi/fastcgi是如何相互通信的。 webserver如何将cgi脚本传递给cgi进程,cgi进程如何响应请求。

在Nginx中,我们这样配置,让nginx将PHP脚本传递给php-fpm

 location / {
root /home/service/public_html;
fastcgi_pass unix:/tmp/php-fpm-test.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/service/public_html/index.php;
include fastcgi_params;
}

它是如何工作的?

编辑:如果有人能给我一段伪代码来描述进程(或其他)与 php-fpm unix 套接字之间的通信,我将不胜感激。

最佳答案

CGI 应用程序只是一个标准的可执行文件或脚本 - 对 Web 服务器的每个 HTTP 请求都对应于该可执行文件或脚本的单个执行/实例,其中环境变量用于传递有关请求的信息(例如请求 URL和请求方法)和 HTTP 请求正文在标准输入上传递。脚本/可执行文件传递原始 HTTP output通过标准输出流到网络服务器。

有关 CGI 应用程序的示例,请参阅 wikipedia page有关示例 perl 脚本和更多详细信息,请通读 CGI specification


Fast CGI 试图减少 CGI 接口(interface)的开销——因为在许多操作系统上启动一个新进程是一项相对昂贵的任务,Fast CGI 试图通过允许单个长时间运行的 Fast CGI 进程来处理来减少这种开销许多 HTTP 请求。

尽管 Fast CGI 的许多部分与 CGI 相似(例如环境变量的格式),但对于 Fast CGI,所有信息都是通过标准输入流传递的。

您应该尝试查看 Fast CGI website了解更多信息 - 特别是 Fast CGI 规范在那里并详细解释了所有这些。

关于nginx - webserver和cgi进程如何相互通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8813860/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com