NodeJS 0.10.46 在 lighttpd 代理之后不再服务
NodeJS 0.10.46 not serving after lighttpd proxy anymore
今天我更新了我的 nodejs 安装(来自官方 CentOS 7 仓库)。
我以前通过 lighttpd 代理服务,没什么特别的:
proxy.server = ( "" =>
( "" =>
(
"host" => "127.0.0.1",
"port" => 2368,
)
)
)
NodeJS 本身运行良好,我有两个应用程序 运行 很好(如果直接访问),lighttpd 还代理了第三个应用程序(由 Java 运行时提供),功能齐全。
问题始于 NodeJS 更新到 0.10.46(通过 yum 包管理器),我的配置没有任何改变。
Lighttpd proxy.debug 输出:
(mod_proxy.c.1158) proxy - start
(mod_proxy.c.1199) proxy - ext found
(mod_proxy.c.1333) proxy - found a host 127.0.0.1 2368
(mod_proxy.c.417) connect delayed: 11
(mod_proxy.c.1042) proxy: fdevent-out 1
(mod_proxy.c.1065) proxy - connect - delayed success
(mod_proxy.c.1030) proxy: fdevent-in 4
(mod_proxy.c.652) proxy - have to read: 0
(mod_proxy.c.1158) proxy - start
(mod_proxy.c.1199) proxy - ext found
(mod_proxy.c.1333) proxy - found a host 127.0.0.1 2368
(mod_proxy.c.417) connect delayed: 11
(mod_proxy.c.1042) proxy: fdevent-out 1
(mod_proxy.c.1065) proxy - connect - delayed success
(mod_proxy.c.1030) proxy: fdevent-in 4
(mod_proxy.c.652) proxy - have to read: 0
NodeJS 输出:
"GET / HTTP/1.0"
"GET /favicon.ico HTTP/1.0" 200
所以请求在第一步被转发,但随后只有一个
500 - Internal Server Error
由 lighttpd 提供。
有什么想法吗?不知道我还能尝试什么。
提前致谢!
节点版本
首先,我还想指出 nodejs 0.10.x 已经非常过时了。 NodeJS 目前在 v4.5 LTS 和 v6.5 Current 上。随着 Javascript 世界的发展非常迅速,依赖发行版的软件包可能会让您陷入非常旧版本的节点。您可以使用 nodesource.com 服务为您的系统获取最新版本。例如。
curl -sL https://rpm.nodesource.com/setup_4.x | bash -
yum install -y nodejs
首先要检查的问题
除此之外,您的 NodeJS 应用程序可以在 localhost:2368 上使用吗?尝试在您的浏览器中访问它(如果 2368 未对外开放,则使用 w3m 之类的文本浏览器)。这可能就像 NodeJS 不向用户返回数据一样简单。
您的 lighttpd.conf 看起来不错,但是嵌套的深度不必要地深,而这可能无法解决您的问题尝试:
proxy.server = (
"" => (
(
"host" => "127.0.0.1",
"port" => "2368"
)
)
)
其他可能性
虽然我无法确切知道您的系统在做什么,但我认为这更有可能是节点问题而不是轻微问题。尝试在节点中编写一个简单的 http 服务器 hello world 应用程序,看看它是否可用于代理。
第一个问题的评论是正确的提示:
lighttpd 版本有问题,更新到 1.4.43 是解决方案。
今天我更新了我的 nodejs 安装(来自官方 CentOS 7 仓库)。
我以前通过 lighttpd 代理服务,没什么特别的:
proxy.server = ( "" =>
( "" =>
(
"host" => "127.0.0.1",
"port" => 2368,
)
)
)
NodeJS 本身运行良好,我有两个应用程序 运行 很好(如果直接访问),lighttpd 还代理了第三个应用程序(由 Java 运行时提供),功能齐全。
问题始于 NodeJS 更新到 0.10.46(通过 yum 包管理器),我的配置没有任何改变。
Lighttpd proxy.debug 输出:
(mod_proxy.c.1158) proxy - start
(mod_proxy.c.1199) proxy - ext found
(mod_proxy.c.1333) proxy - found a host 127.0.0.1 2368
(mod_proxy.c.417) connect delayed: 11
(mod_proxy.c.1042) proxy: fdevent-out 1
(mod_proxy.c.1065) proxy - connect - delayed success
(mod_proxy.c.1030) proxy: fdevent-in 4
(mod_proxy.c.652) proxy - have to read: 0
(mod_proxy.c.1158) proxy - start
(mod_proxy.c.1199) proxy - ext found
(mod_proxy.c.1333) proxy - found a host 127.0.0.1 2368
(mod_proxy.c.417) connect delayed: 11
(mod_proxy.c.1042) proxy: fdevent-out 1
(mod_proxy.c.1065) proxy - connect - delayed success
(mod_proxy.c.1030) proxy: fdevent-in 4
(mod_proxy.c.652) proxy - have to read: 0
NodeJS 输出:
"GET / HTTP/1.0"
"GET /favicon.ico HTTP/1.0" 200
所以请求在第一步被转发,但随后只有一个
500 - Internal Server Error
由 lighttpd 提供。
有什么想法吗?不知道我还能尝试什么。
提前致谢!
节点版本
首先,我还想指出 nodejs 0.10.x 已经非常过时了。 NodeJS 目前在 v4.5 LTS 和 v6.5 Current 上。随着 Javascript 世界的发展非常迅速,依赖发行版的软件包可能会让您陷入非常旧版本的节点。您可以使用 nodesource.com 服务为您的系统获取最新版本。例如。
curl -sL https://rpm.nodesource.com/setup_4.x | bash -
yum install -y nodejs
首先要检查的问题
除此之外,您的 NodeJS 应用程序可以在 localhost:2368 上使用吗?尝试在您的浏览器中访问它(如果 2368 未对外开放,则使用 w3m 之类的文本浏览器)。这可能就像 NodeJS 不向用户返回数据一样简单。
您的 lighttpd.conf 看起来不错,但是嵌套的深度不必要地深,而这可能无法解决您的问题尝试:
proxy.server = (
"" => (
(
"host" => "127.0.0.1",
"port" => "2368"
)
)
)
其他可能性
虽然我无法确切知道您的系统在做什么,但我认为这更有可能是节点问题而不是轻微问题。尝试在节点中编写一个简单的 http 服务器 hello world 应用程序,看看它是否可用于代理。
第一个问题的评论是正确的提示: lighttpd 版本有问题,更新到 1.4.43 是解决方案。