问题标签 [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.
xml-rpc - 直接与 SCGI 频道通信
在我的家庭服务器上,我正在尝试编写一个与 SCGI (XML-RPC) 服务器 (rtorrent) 通信的命令行脚本。因为它确实是我唯一擅长的语言,所以我想使用 PHP(即 php-cli)。但是,当我试图找到有关如何执行此操作的更多信息时,我能找到的唯一解决方案是使用网络服务器重定向到 SCGI 服务器。我想避免安装网络服务器只是为了运行一个简单的脚本,所以我想知道是否有任何方法可以直接在 PHP 中与 SCGI 进行通信。
我发现了一些 Python 脚本可以做到这一点,但我从未使用过 Python,而且我不想学习另一种语言。
那么,任何人都可以向我指出一些可以帮助我开始的资源吗?
ruby - Redmine 2.3, ruby 2.0.0, nginx 1.4.1 with passenger 4.0.2 all HTTP POSTs fail
I'm new to nginx and am attempting to run Redmine 2.3 using ruby 2.0.0, phusion passenger 4.0.2 and nginx 1.4.1. This is compiled from the passenger-install-nginx script on an ARMv5te system in Arch Linux ARM.
I am getting the following in the nginx log: (Note: I've removed the server name from the logs/configs)
The last error occurs consistently whenever I do an HTTP POST on any page in redmine. HTTP GET requests work fine with pages rendered.
nginx.conf
sites-enabled/redmine.conf
One thing that may be relevant - I can run redmine fine if I use the built in ruby webrick server, so I'm guessing this is likely to be an nginx/passenger problem. Has anyone got any idea what the issue is?
regex - Nginx 变量 + 配置中的正则表达式
在我的 /etc/nginx/nginx.conf
第一个例子:
这意味着如果我访问 httpwebsite/~user1/ 它会将 web 文件夹重定向到 /home/user1/web
如果我访问 httpwebsite/~nextuser/ 它将重定向到 /home/nextuser/web
第二个例子:现在我想对 scgi mount 做同样的事情:
如何像第一个示例一样将这 2 行代码转换为通配符 1 行?基本上将 /RPC-$USERNAME 之类的东西传递给 scgi_pass /home/$USERNAME/scgi.socket
webserver - uWSGI 协议和 SCGI 的主要区别是什么?
我目前正在编写一个需要与网络服务器通信的服务器。我不确定我应该使用什么来弥合我的服务器和网络服务器、SCGI 或 uWSGI 协议之间的差距。在某些时候,我发誓我在uwsgi文档的某个地方读到了 uWSGI 协议源自 SCGI,但我再也找不到这条线了。
它们有何不同?
c++ - 无法解析带有空字符的字符串
我正在尝试为SCGI请求编写解析器。我正在尝试解析示例中描述的字符串,但由于某种原因,我找不到第二个空字符的位置,即分隔内容长度值和下一个属性名称的位置。
这是我的测试字符串:
我可以找到第一个空字符的位置,位置 18。但是一旦我试图找到之后的那个,返回的位置是无效的,偏移了几个字符,一直到位置 24。
这是我的算法:
nginx - nginx返回长度错误的网络字符串?
nginx version: nginx/1.7.9
我在运行最新 OSX 的 Mac 上通过 macports安装了 nginx ( )。
我配置了一个 URI 来使用 SCGI:
当我在 上执行 GET 请求时127.0.0.1/server
,我在我的 SCGI 服务器上看到以下内容:
633:CONTENT_LENGTH0REQUEST_METHODGETREQUEST_URI/serverQUERY_STRINGCONTENT_TYPEDOCUMENT_URI/serverDOCUMENT_ROOT/opt/local/htmlSCGI1SERVER_PROTOCOLHTTP/1.1REMOTE_ADDR127.0.0.1REMOTE_PORT62088SERVER_PORT80SERVER_NAMElocalhostHTTP_HOST127.0.0.1HTTP_CONNECTIONkeep-aliveHTTP_CACHE_CONTROLmax-age=0HTTP_ACCEPTtext/html,application/xhtml+xml,application/xml;q=0.9,image/webp , / ;q=0.8HTTP_USER_AGENTMozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36HTTP_DNT1HTTP_ACCEPT_ENCODINGgzip, deflate, sdchHTTP_ACCEPT_LANGUAGEen-US,en;q=0。文件的
问题是网络字符串的长度 633 与解释不匹配。如果我正确理解了 netstrings规范,则 633 应该是第一个:
和最后一个之间的字符长度,
:
任何 8 位字节的字符串都可以编码为 [len]":"[string]","。这里 [string] 是字符串, [len] 是 ASCII 数字的非空序列,以十进制表示 [string] 的长度。ASCII 数字是 <30> 表示 0,<31> 表示 1,以此类推直到 <39> 表示 9。禁止 [len] 前面的额外零:[len] 以 <30> 开头,正好在 [ string] 为空。
例如,字符串hello world!
被编码为31 32 3a 68 65 6c 6c 6f 20 77 6f 72 6c 64 21 2c
,即12:hello world!,
。
所以,我弄错了长度。这怎么解释?
lighttpd - Lighttpd:将 mod_scgi 配置为不区分大小写
我有以下内容lighttpd.conf
:
当请求http://192.168.0.42/infodesk
我得到正确的 CGI 时。但是当请求例如http://192.168.0.42/InfoDesk
我得到一个错误 404。
有没有办法将 mod_scgi 配置为不区分大小写?
我搜索了 lighttpd 文档和配置,但找不到任何东西。mod_scgi 的源代码可以阅读和理解,但是我没有找到 CGI-URI 被处理或比较的行。
感谢您的任何提示!
nginx - nginx .jpg 和 .jpeg 在 / 中找不到,但在其他任何地方都可以找到
我是 nginx 新手,我喜欢它。我正在发布一些 scgi 提要和一些静态内容。在 /home 下创建主页层次结构后,我将其移至 /。但是当我把它放在那里时,.jpg 和 .jpeg 图像返回 404。
sitename.com/test.gif 被发现就好了。
sitename.com/test.jpg 是 404
但创建一个子目录,并复制 test.jpg 工作。
sitename.com/subdirectory/jpg 很好。
我正在运行非常空的配置文件,因为它们安装在 Ubuntu 18 下。
我真的很想知道这里发生了什么,以及为什么顶级 .jpg/.jpeg 文件会这样做。
我知道我可以创建一个位置指令,如下所示:
但这会破坏对从其他根提供的 scgi 位置中的 .jpg/jpeg 文件的访问。
node.js - 反向代理是耦合 nginx 和 nodejs 的最有效方式吗?
当您有一个带有多个 nodejs 应用程序的网络服务器时,您所做的典型事情就是在它们前面添加一些反向代理并编写规则。Nginx 目前是最受欢迎的,因为它速度很快,所以我将重点介绍它,但这个问题也可以应用于其他网络服务器。
今天让我感到震惊的是,这听起来有点低效。毕竟,同一个 HTTP 请求需要解析两次——首先是代理,然后是 nodejs。而且协议本身也是基于文本的,在解析器中有很多边缘情况……难道不能让 webserver 和 nodejs 之间的耦合更高效,从而只需要解析一次请求吗?
我的第一个想法是关于 fastcgi,但事实证明这只会让事情变得更糟,因为它限制 nodejs 一次只能处理一个请求。无论如何,它已经过时了。
然后我又挖了一点,发现SCGI看起来更好,甚至得到了 nginx 的支持……但似乎不是在 NodeJs 方面。
最后我找到了Apache JServ 协议,但据我所知,nginx 和 nodejs 都不支持它,但支持更差。
为什么是这样?我知道与典型请求中发生的所有其他事情相比,这种开销可能很小,但它真的如此微不足道,甚至不值得付出任何努力吗?即使是很小的收益也可以加起来,并且很容易有一个简单的包用最少的工作量来替换 Nodehttp.Server
的scgi.Server
。
nginx - SCGI 可以一次处理多个请求吗?
根据我对SCGI 规范的理解,SCGI 服务器一次只能处理一个请求。SCGI 服务器一次只能处理一个请求是真的吗?
如何解决此限制,以便使用 SCGI 服务的 Web 应用程序一次能够处理多个请求?
我考虑过启动多个 SCGI 服务器。例如,如果我启动两个 SCGI 服务器分别监听127.0.0.1:8000
和127.0.0.1:8001
,我可以像这样配置 NGINX Web 服务器:
这种方法实际上是否允许我的 Web 应用程序一次服务多个请求?