fastCGI使用

news2024/11/23 22:22:19

1.http解释

        在使用fastCGI之前需要先了解什么是http,以及静态请求和动态请求。

1.什么是http

        HTTP是超文本传输协议,它定义了客户端和服务器端之间文本传输的规范。HTTP通常运行在TCP之上,使用80端口。HTTP是一种简单的请求-响应协议,客户端向服务器发送请求,服务器返回相应的文件或数据作为应答。HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。HTTP是一种面向对象的协议,允许传送任意类型的数据对象。

2.静态请求和动态请求

        静态请求和动态请求是指客户端向服务器请求的资源类型不同。
        静态请求是指请求的资源是固定的,不需要后台程序处理,如html、css、js、图片等文件。
        动态请求是指请求的资源是根据用户的不同需求而动态生成的,需要后台程序处理,如php、jsp、asp等文件。
        静态请求和动态请求的区别在于:
            静态请求的响应速度快,动态请求的响应速度慢。
            静态请求的交互性差,动态请求的交互性好。
            静态请求的内容存在于页面上,动态请求的内容存在于数据库中。
            静态请求的网址一般以.html结尾,动态请求的网址一般带有?或&符号。

3.请求头和响应头

        请求头和响应头是HTTP消息中的一部分,用于在请求和响应中传递附加信息。
        请求头是客户端向服务器发送的标头,包含有关请求、客户端或请求资源的信息。
        响应头是服务器向客户端发送的标头,包含有关响应、服务器或响应资源的信息。
        请求头和响应头都由标头名称和标头值组成,中间用冒号分隔,如Content-Type: text/html。不同的标头有不同的作用,例如:
    Allow:标头表示服务器支持哪些请求方法(如GET、POST等)。
    Content:Type 标头表示响应的内容类型(如text/html、image/jpeg等)。
    Location:标头表示客户端应该重定向到哪个URL。
    Cookie 标头表示客户端发送给服务器的Cookie。
    Set-Cookie 标头表示服务器发送给客户端的Cookie。

2.fastCGI

        概念:快速通用网关接口,FastCGI是一种二进制协议,用于将交互式程序与web服务器接口连接。它是早期的通用网关接口(CGI)的变体之一。FastCGI主要的目的是减少与web服务器和CGI程序接口相关的开销,使服务器能够处理更多的网页请求。在Internet Information Services7中包括了FastCGI组件,它提供了更高的可靠性和更好的性能,并允许您在IIS 7上运行PHP应用程序框架以及其他Web应用程序框架。(本质上就是把服务器处理不了的请求处理,并且转发给客户端)

 作用
        1. 减少进程启动时间:由于CGI在每个请求时都需要启动新的进程,在高并发的情况下,进程的启动时间将成为性能瓶颈。FastCGI通过保持应用程序进程的状态来避免这种情况。
        2. 改善资源利用率:由于FastCGI可以使用工作进程或线程来处理请求,因此它可以更有效地利用系统资源,从而提高系统的性能。
        3. 提高服务器负载能力:由于FastCGI所需的系统资源较少,一个Web服务器可以处理更多的客户端请求。
        4. 支持多种编程语言:FastCGI是一种通用的协议,它可以支持多种编程语言,包括PHP、Perl、Python等。
        5. 提供更好的安全性和可靠性:FastCGI可以通过SSL协议进行数据加密,从而提高Web应用程序的安全性;同时,FastCGI提供了可靠的错误处理,防止应用程序出现严重问题时无法正常工作。
        6. 提供更好的安全性和可靠性:FastCGI可以通过SSL协议进行数据加密,从而提高Web应用程序的安全性;同时,FastCGI提供了可靠的错误处理,防止应用程序出现严重问题时无法正常工作。

FastCGI的工作流程如下:
    1. Web服务器启动FastCGI主进程,该进程会等待Web服务器的请求。
    2. 当有请求到达Web服务器时,Web服务器将该请求采用socket方式转发给FastCGI主进程。
    3. FastCGI主进程选择并连接到一个CGI解释器(关联FastCGI子进程),然后将CGI环境变量和标准输入发送到FastCGI子进程中。
    4. FastCGI子进程执行具体的CGI程序,并将CGI程序产生的输出返回给FastCGI主进程。
    5. FastCGI主进程将CGI程序的输出发送回Web服务器。
    6. Web服务器将FastCGI返回的HTML结果返回给客户端。

1.工具下载

        fastCGI安装包下载网址:这里

        spawn-fcgi安装包下载:这里

2.安装

        在这里使用了 fcgi-2.4.1-SNAP-0910052249.tar.gz以及spawn-fcgi-1.6.4.tar.gz 这两个包

使用命令解压安装

解压
tar -zxvf  fcgi-2.4.1-SNAP-0910052249.tar.gz
tar -zxvf  spawn-fcgi-1.6.4.tar.gz 
进入到解压出来的文件夹安装
1.make
2.sudo make install

3.fastcgi的使用

        1.部署静态网页

                  网页可以在网上下载,并且安装我之前发布的文章部署,可参考这篇文章

        2.部署nginx配置

              在这里fastcgi是处理nginx服务器处理不了的请求,需要在nginx配置文件中增加一些内容

location /Myupload #/Myupload这里需要和客户端提交的处理指令一致
    {
        fastcgi_pass 127.0.0.1:10000;    #指定转发的服务器IP以及端口
        include fastcgi.conf    #表示添加的启动配置文件
    }

        3.启动fastcgi程序

                在这里需要编写一个fastcgi的程序,这里fastcgi的软件包提供了一个测试程序,进入到上面解压出来的目录,如图,在examples目录中有echo.c程序,这是一个测试程序

        编译该程序命令

gcc echo.c -o app -lfascgi

        使用 ldd app 命令可以查看是否找到了所有的动态库

        如果没有找到需要的动态库可以进入到 usr/local/lib 目录下查看是否存在

        启动该程序命令

# 命令
spawn-fcgi -a 需要和nginx.conf配置的ip地址一致 -p 需要和nginx.conf配置的端口号一致 -f 可执行程序
# 样例
spawn-fcgi -a 127.0.0.1 -p 10000 -f ./app

        如果出现下面的提示,表示启动成功

         客户端(即浏览器)发送来的处理请求可以在日志目录logs中的错误日志文档查看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/500005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GUN C编译器拓展语法学习笔记(二)属性声明

一、属性声明 1、存储段:section 1.1 GNU C编译器扩展关键字:__attribute__ GNU C增加了一个__attribute__关键字用来声明一个函数、变量或类型的特殊属性。主要用途就是指导编译器在编译程序时进行特定方面的优化或代码检查。例如,我们可以…

C语言三子棋小游戏

哈喽,大家好,今天我们要利用之前所学习的C语言知识来写一个三子棋小游戏。 目录 1.游戏 2.函数部分 2.1.菜单 2.2.初始化棋盘 2.3.打印棋盘 2.4.玩家下棋 2.5.电脑下棋 2.6.判断输赢 2.7.判断棋盘是否已满 3.完整代码展示 1.游戏 今天我们写的…

未知时间信息下雷达运动目标的计算高效重聚焦与估计方法

论文背景 在雷达成像中,回波信号在接收到之前可能已经被多次反射或散射,这样会导致回波信号的时间和频率发生变化。其中,距离向维度上的变化称为距离单元迁移(range cell migration,RCM),频率向…

Spring笔记

文章目录 1、什么是Spring?2、如何创建Spring3、Spring简单的读和取操作1.直接在spring-config.xml里面放置对象2.通过配置扫描路径和添加注解的方式添加Bean对象3.为什么需要五个类注解4.从spring中简单读取 Bean对象5.Resource和Autowired的异同 1、什么是Spring&…

Transformer结构细节

一、结构 Transformer 从大的看由 编码器输入、编码器、解码器、解码器输入和解码器输出构成。 编码器中包含了词嵌入信息编码、位置编码、多头注意力、Add&Norm层以及一个全连接层; 解码器中比编码器多了掩码的多头注意力层。 二、模块 2.1 Input Embeddi…

canvas学习之华丽小球滚动电子时钟

教程来自 4-3 华丽的小球滚动效果 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>华丽小球滚动时钟…

【AVL树的模拟实现】

1 AVL树的概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查找元素相当于在顺序表中搜索元素&#xff0c;效率低下。因此&#xff0c;两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种解决…

人工智能基础部分14-蒙特卡洛方法在人工智能中的应用及其Python实现

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能基础部分14-蒙特卡洛方法在人工智能中的应用及其Python实现&#xff0c;在人工智能领域&#xff0c;蒙特卡洛方法&#xff08;Monte Carlo Method, MCM&#xff09;被广泛应用于各种问题的求解。本文首先将…

wvp-GB28181-pro录像功能开发环境搭建、配置、使用

开发环境、调试环境搭建 开发wvp平台搭建 离线安装脚本&#xff1a;https://gitcode.net/zenglg/ubuntu_wvp_online_install.git 下载离线安装脚本&#xff0c;完成wvp平台的部署 开发环境要求 操作系统&#xff1a;包管理工具是apt ky10桌面版uos桌面版deepin桌面版ubuntu桌面…

ArmDot.NET Crack

ArmDot.NET Crack ArmDot是一个.NET加密工具&#xff0c;用于保护使用.NET编写的程序。 企业需要保护他们的知识产权&#xff0c;包括他们的算法、产品和使用的资源的源代码。 然而&#xff0c;.NET编译器会生成一个通用的可访问代码。代码中嵌入的资源很容易访问&#xff0c;并…

RocketMQ不同的类型消息

目录 普通消息 可靠同步发送 可靠异步发送 单向发送 三种发送方式的对比 顺序消息 事物消息 两个概念 事务消息发送步骤 事务消息回查步骤 消息消费要注意的细节 RocketMQ支持两种消息模式: 普通消息 RocketMQ提供三种方式来发送普通消息&#xff1a;可靠同步发送、…

剑指Offer题集(力扣)

文章目录 剑指Offer题集&#xff08;[力扣题单](https://leetcode.cn/problemset/all/?listIdlcof&page1)&#xff09;[剑指 Offer 03. 数组中重复的数字](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/)[剑指 Offer 04. 二维数组中的查找](https:…

SSM框架练习一(登录后关联数据表的业务模型)

需要实现的整体功能&#xff1a; 登录反馈信息列表展示查询反馈信息发表反馈 1.数据库设计 创建数据库 创建表结构及其约束 添加测试数据 工具&#xff1a;PHP、Navicat create table tab_user(id int primary key auto_increment,uname varchar(30) not null,pwd varc…

Weblogic XMLDecoder 反序列化漏洞(CVE-2017-10271复现)

文章目录 前言影响版本环境搭建漏洞复现深度利用 前言 CVE-2017-10271漏洞产生的原因大致是Weblogic的WLS Security组件对外提供webservice服务&#xff0c;其中使用了XMLDecoder来解析用户传入的XML数据&#xff0c;在解析的过程中出现反序列化漏洞&#xff0c;导致可执行任意…

从搬砖工到架构师,Java全栈学习路线总结

&#x1f307;文章目录 前言一、前置知识二、 Web前端基础示例&#xff1a;1.文本域2.密码字段 三、后端基础一. Java基础二. 数据库技术三. Web开发技术四. 框架技术五. 服务器部署 四、其他技术五、全栈开发六、综合实践七、学习教程一、前端开发二、后端开发三、数据库开发四…

springboot+jsp乡村中小学校园网站建设

随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;乡村小学校园网当然也不能排除在外&#xff0c;从校园概况、学校风采、招生信息的统计和分析&#xff0c;在过程中会产生大量的…

Maven依赖原则及如何解决Maven依赖冲突

前言 在大数据应用中&#xff0c;现在发现依赖关系非常复杂&#xff0c;在上线之前很长测试&#xff0c;前一段时间在部署udf 出现了导致生产Hiveserver2 宕机问题&#xff0c;出现严重事故。现在就咨询研究一下。Maven虽然已经诞生多年&#xff0c;但仍然是当前最流行的Java系…

Arrays:点燃你的数组操作技巧的隐秘武器。

前言 数组在 Java 中是一种常用的数据结构&#xff0c;用于存储和操作大量数据。但是在处理数组中的数据&#xff0c;可能会变得复杂和繁琐。Arrays 是我们在处理数组时的一把利器。它提供了丰富的方法和功能&#xff0c;使得数组操作变得更加简单、高效和可靠。无论是排序、搜…

【c语言】字符串类型转换 | itoa函数的使用

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ …

MySQL innodb介绍

InnoDB引擎的优点是支持兼容ACID的事务&#xff0c;以及参数完整性&#xff08;即对外键的支持&#xff09;。 Oracle公司2005年10月收购了Innovase&#xff1b;Innobase采用双认证授权。它使用GNU发行&#xff0c;也允许其他想将InnoDB结合到商业软件的团体好的授权 mysql5.…