我遇到了一个奇怪的情况。我需要从 perl 脚本中调用 cgi-bin 中的程序。当我尝试使用 执行此操作时exec($program)
,我得到了
(20014)Internal error: proxy: error reading status line from remote server
proxy: Error reading from remote server returned by ...
长话短说...我呼吁mapserv
(http://mapserver.org) 作为 cgi 程序来自OpenLayers
(http://openlayers.org)。通常,我的网站由 Perl Dancer 提供服务,但 mapserver 调用是直接http://server/cgi-bin/mapserv
从 JavaScript 进行的。Dancer 网站由Starman
Apache2 代理前端提供服务。它看起来是这样的
[browser] -> http://server/app -> [apache2] -> proxy port 5000 -> Starman
|
|
+-> http://server/cgi-bin/mapserv -> [apache2] -> cgi-bin -> mapserv
这就是我想要实现的目标
[browser] -> http://server/app -> [apache2] -> proxy port 5000 -> Starman
|
|
mapserv <-- cgi-bin <-- [apache2] <--+
我看到了这个问题:20014 错误,但建议的解决方案没有帮助。
还有其他提示吗?
答案1
我不确定您使用的是哪个版本的 Apache。我在使用 Apache 2.2.22 时也遇到过类似的问题,Apache 的文档建议如下:
代理初始未池化
如果设置了此变量,则在客户端连接是初始连接的情况下,不会重用任何池连接。这可以避免由于竞争条件而导致的“代理:从远程服务器读取状态行时出错”错误消息,即在代理检查连接之后,代理发送的数据到达后端之前,后端服务器关闭了池连接。必须记住,设置此变量会降低性能,尤其是对于 HTTP/1.0 客户端。
但我不确定这是否能解决您的问题。