一文搞懂 CGI|FastCGI|WSGI|uWSGI|uwsgi

一、CGI

  1. 通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CGI描述了服务器和请求处理程序之间传输数据的一种标准。
  2. CGI程序可以用任何脚本语言或者是完全独立编程语言实现,只要这个语言可以在这个系统上运行。
  3. 用来规范web服务器传输到php解释器中的数据类型以及数据格式,包括URL、查询字符串、POST数据、HTTP header等,也就是为了保证web server传递过来的数据是标准格式的
  4. 一句话总结: 一个标准,定义了客户端服务器之间如何传数据

二、FastCGI

  1. 快速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与Web服务器通信的协议。FastCGI是早期通用网关接口(CGI)的增强版本。

  2. FastCGI致力于减少网页服务器与CGI程序之间互动的开销,从而使服务器可以同时处理更多的网页请求。

  3. 使用FastCGI的服务器:

    • Apache HTTP Server (部分)
    • Cherokee HTTP Server
    • Hiawatha Webserver
    • Lighttpd
    • Nginx
    • LiteSpeed Web Server
    • Microsoft IIS
  4. 一句话总结: CGI的升级版

在这里插入图片描述

三、WSGI

  1. Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。自从WSGI被开发出来以后,许多其它语言中也出现了类似接口。
  2. wsgi server (比如uWSGI) 要和 wsgi application(比如django )交互,uwsgi需要将过来的请求转给django 处理,那么uWSGI 和 django的交互和调用就需要一个统一的规范,这个规范就是WSGI WSGI(Web Server Gateway Interface)
  3. WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。自从 WSGI 被开发出来以后,许多其它语言中也出现了类似接口。
  4. WSGI 的官方定义是,the Python Web Server Gateway Interface。从名字就可以看出来,这东西是一个Gateway,也就是网关。网关的作用就是在协议之间进行转换。
  5. WSGI 是作为 Web 服务器与 Web 应用程序或应用框架之间的一种低级别的接口,以提升可移植 Web 应用开发的共同点。WSGI 是基于现存的 CGI 标准而设计的
  6. 一句话总结: 为Python定义的web服务器和web框架之间的接口标准

四、uWSGI

  1. wsgiref,werkzeug(一个是符合wsgi协议的web服务器+工具包(封装了一些东西))
  2. uWSGI 用c语言写的,性能比较高
  3. gunicorn:python写的
  4. tornado:也可以部署django项目
  5. 它是一个Web服务器(类似的有wsgiref,gunicorn),它实现了WSGI协议、uwsgi、http等协议。用于接收前端服务器转发的动态请求并处理后发给 web 应用程序。
  6. Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换
  7. 一句话总结: 一个Web Server,即一个实现了WSGI的服务器,大体和Apache是一个类型的东西,处理发来的请求。
    在这里插入图片描述

五、uwsgi

location / {
          #方式一
          #include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的
         	#uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间
          #uwsgi_pass 101.133.225.166:8080;
          #方式二
          #include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的
          #uwsgi_pass unix:///var/www/script/uwsgi.sock; # 指定uwsgi的sock文件所有动态请求
          #方式三
          proxy_pass http://101.133.225.166:8088
    
        }
  1. 它是uWSGI服务器实现的独有的协议,用于定义传输信息的类型,是用于前端服务器与 uwsgi 的通信规范。
  2. 一句话总结: uWSGI自有的一个协议
  3. uWSGI:web服务器,等同于wsgiref
  4. uwsgi:uWSGI自有的协议
    在这里插入图片描述

技术小白记录学习过程,有错误或不解的地方请指出,如果这篇文章对你有所帮助请点点赞收藏+关注谢谢支持 !!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LoisMay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值