问题标签 [scgi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
16018 浏览

python - scgi和wsgi有什么区别?

这两者有什么区别?哪个更好/更快/可靠?

0 投票
2 回答
12877 浏览

sockets - 端口上的 FastCGI 与套接字上的 FastCGI

我今天在 Cherokee 上设置 Django(使用 SCGI),我注意到Django 文档说您可以使用主机/端口组合或套接字在网络服务器和 Django 之间进行通信。

他们在这件事上唯一要说的就是

你选择的是一种偏好方式;由于权限问题,TCP 套接字通常更容易。

(顺便说一句,我在使用套接字时遇到了权限问题,但在使用主机时却没有:)。)

我隐约记得我的系统编程课上的套接字是如何工作的,但我真的很好奇两者之间的有效区别是什么。任何时候有选择的东西,都会有人对这件事有意见,所以我希望能得到那个。特别是,是否有任何性能差异?

或者,如果它真的无关紧要,我只是想要一些确认,所以我可以继续我的编程并忽略这些系统管理员的东西。

0 投票
2 回答
1996 浏览

http - 客户端断开连接时,HTTP 代理/FastCGI/SCGI 未关闭连接 - 错误或功能?

我正在通过长 XMLHttpRequest 轮询为CppCMS框架提供Comet 支持。在许多情况下,这样的请求在服务器给出任何响应之前就被客户端关闭了——例如页面被关闭,用户移动到其他页面或者它只是被刷新。

在服务器端,我希望我会收到连接断开的通知。我通过 3 个连接器测试了应用程序:FastCGI、SCGI 和简单的 HTTP 代理。

从 3 个主要的 UNIX Web 服务器 Apache2、lighttpd 和 Nginx 中,只有最后一个按预期关闭了连接,允许我的应用程序从等待队列中删除请求——这适用于 FastCGI 和 HTTP 代理连接器。(Nginx 默认没有 scgi 模块)。

其他的,Apache 和 Lighttpd 不会关闭连接或通知后端断开客户端,继续进行,就好像客户端仍然在线一样。这适用于所有 3 个受支持的 API:FastCGI、SCGI 和 HTTP 代理。

我已经为Lighttpd打开了一个问题,但更让我担心的是 Apache——作为 lighttpd 的成熟且得到良好支持的 Web 服务器,并且没有透露客户端已经离开的服务器后端。

问题:

  1. 这是一个错误还是一个功能?是否有任何理由不关闭 Web 服务器和应用程序后端之间的连接?
  2. 是否有现实生活中的 Comet 应用程序通过 FastCGI/SCGI/HTTP-Proxy 后端在这些服务器后面工作?
  3. 如果上述情况属实,他们如何处理这个问题?我知道我可以每 10 秒超时一次所有连接,但我想让它们在客户端监听时保持空闲——因为这样可以更容易地扩大规模——每个连接都非常便宜——成本只是打开的套接字。

谢谢!

0 投票
1 回答
297 浏览

python - 使用 Flup 和 Cherokee 部署 Django-Mingus 时出现问题。奇怪的管理员行为

我有一个 django-mingus 博客,在 django 的集成开发 Web 服务器上运行得非常好。它安装在 virtualenv 中。

使用 cherokee 0.99.42 的 django 应用程序向导部署后,管理面板显示出奇怪的行为。有时所有应用程序都显示在管理面板中,有时只显示应用程序的一个子集。从主管理视图中消失的总是相同的应用程序。

manage.py runfcgi 命令通过安装在 virtualenv 中的 python 解释器启动。

你有跟踪这类问题的方法吗?可能与未正确设置的环境变量有关吗?

编辑:这可能是循环导入问题吗?

第二次编辑:同样的问题发生在 nginx 上。在 ./manage.py runfcgi 命令中添加 Debug=True 可使设置稳定。

0 投票
1 回答
7773 浏览

cgi - WebSocket 和 CGI​​/FastCGI/SCGI 协议

我正在寻找有关在 CGI、FastCGI 或 SCGI 协议后面工作的客户端 Web 套接字、Web 服务器和实际应用程序后端之间交互的资源。

在这一点上,这似乎是不可能的,因为:

请求长度是在CONTENT_LENGTH变量中专门定义的,所以我不能指望数据会继续来自标准输入的网络服务器,或者我可以吗?因为未设置CONTENT_LEGTH定义无请求主体。

应用程序不再需要读取CONTENT_LEGTH日期字节,如果读取的字节数较少,则将其视为断开连接的客户端。

  • 是否有任何关于 (F|C)CGI 如何更新或可以与 WebSockets 一起使用的资源?
  • 是否有任何支持 WebSockets 的 SCGI/FCGI/CGI 规范草案?
  • 是否有任何已知的支持 WebSockets 的 Web 服务器?
  • 如果是这样,它们是否支持 *CGI 协议?
  • 你有使用 WebSockets 和 *CGI 的经验吗?

谢谢,所有信息都是合适的。

阿尔乔姆

有人吗?

0 投票
1 回答
619 浏览

c# - SCGI scripting engine servers? (C#, Java, PHP)

I am looking for scripting engines that provide an SCGI server:

  • a server like Apache receives HTTP requests and sends them to the backend scripting engine,
  • the scripting engine parses and process the SCGI request and sends the reply to Apache,
  • Apache sends the reply to the client.

I've an interest in using C#, Java and PHP (any of those three) and would like to find relevant resources (not only links to code but also how-to's in order to make this all work toguether).

Thanks!

0 投票
2 回答
452 浏览

sockets - FastCGI / SCGI 前叉

我一直在尝试实现一个 Web 服务器网关(出于娱乐和教育目的),我对 FastCGI/SCGI 背后的核心架构与 pre-fork 模型有一些疑问。

FastCGI/SCGI 实现如何处理 pre-fork 场景中的通信?AFAIK,网关只有一个套接字来连接到 FastCGI 服务器。通常,有一个父进程接受来自网关的连接并将工作移交给预先分叉的工作人员之一。

由于在孩子分叉建立连接,您应该如何让孩子使用这些套接字与网关进行通信?

0 投票
1 回答
137 浏览

node.js - 使用 node.js 为 scgi 编写 ClientRequest

我想写一个 scgi 版本http.request,它返回一个http.ClientRequest. 当然,除了scgi,我会写等价的。

我想知道我应该如何扩展或应该从哪里开始。我可以处理 scgi 部分,我只是想知道如何实现它,以便它或多或少地替代http.request. 换句话说,使用相同的方式。

0 投票
1 回答
987 浏览

django - 为什么 Web 框架通过 FastCGI/SCGI 而不是 HTTP 提供服务?

主要的 Web 框架(例如 Django、Pyramid、Rails 等)通常作为持久性服务器运行,并使用单独的 Web 服务器(如 nginx)作为前端。Web 服务器通过 FastCGI 或 SCGI 等协议进行连接:

这对我来说似乎很复杂。当后端可以运行自己的 HTTP 服务器时,为什么请求会转换为完全不同的协议?

这种方法似乎更简单也更灵活,因为只有一个传输协议,而且它是一个 RFC。

但是,我认为我从未见过Web 框架鼓励仅使用 http 的设计,所以我认为这一定是有原因的。

在这里使用像 FastCGI/SCGI 这样的协议有什么好处?

0 投票
0 回答
386 浏览

http - FCGI / SCGI:关于多处理的理论资料

我即将编写一个 FastCGI / SCGI(独立实现)服务器,但我对网络化,尤其是延迟应用程序编程没有太多经验。

当我详细思考我想做什么时,我遇到了一个理论问题。当 Web 服务器向我的服务器发送 TCP 请求时,输入(字节)将被处理到当前处理程序(FastCGI / SCGI 处理程序)。问题是:如果响应创建需要一些时间会发生什么?假设客户端请求一个大约 10MB 的大文件。服务器需要等到 10MB 被刷新到客户端,我是对的吗?所以得出的结论是:如果客户端的互联网连接较低,我的服务器会被阻塞,直到刷新完整的 10MB,不是吗?

例如,需要执行 SQL 语句的流程请求呢,它们需要一些时间。这次服务器会被阻止,不是吗?请纠正我。

为了解决这个问题,我唯一的想法是使用线程——我不会对它们很有经验。如果我正确理解了 SCGI 协议,那么线程就不是解决方案,因为它期望立即响应请求。而不是支持请求 ID 的 FastCGI。你的解决方案是什么?