【问题标题】:Express.js piping request to php built-in server on localhost results in ECONNREFUSEDExpress.js 对本地主机上的 php 内置服务器的管道请求导致 ECONNREFUSED
【发布时间】:2017-09-30 12:16:15
【问题描述】:

我正在构建一个使用 npm 进行开发的简单网站,它由支持 php 的提供商托管。

使用 php 的唯一功能是联系表单发送电子邮件。剩下的就是简单的 html 和 javascript。

我在开发中使用一个简单的 php 服务器,从 php -S localhost:8000 开始测试一个简单的 php 电子邮件脚本,并在开发中再次将 email.php 的代理请求反向到本地的这个 php 服务器。

Node 应用程序在端口 3000 上,php 服务器在端口 8000 上。问题是当请求通过 localhost:3000/email.php 时,我收到以下快速服务器配置的连接被拒绝错误:

#!/usr/bin/env node

var express = require('express');
var app = express(),
  request= require('request'),
  port = +(process.env.PORT || 3000);


app.set('case sensitive routing', false);

app.post( '/email.php', function( req, res ){
  req.pipe( request({
    url: 'http://localhost:8000/email.php',
    qs: req.query,
    method: req.method
  }, function(error){
    if (error.code === 'ECONNREFUSED'){
      console.error('Refused connection');
    } else {
      throw error;
    }
  })).pipe( res );
});


 // other request handlers here

app.listen(port, function() {
  console.log('listening');
});

Php 服务器肯定已经启动并为端口 8000 上的所有页面提供服务,我可以使用浏览器浏览这些页面。我用 curl 对其进行了测试,当使用 curl 直接发布到 localhost:8000 时,它似乎可以很好地处理请求。

不知道为什么会出现这个错误,摸不着头脑,想不出任何原因。

非常感谢您的帮助。

【问题讨论】:

  • 您的快递服务器是否在同一台服务器上运行?

标签: javascript php node.js express reverse-proxy


【解决方案1】:

我知道它是什么了,天哪!好吧,我会发布答案,以防其他人偶然发现。

似乎是 PHP 的罪魁祸首;检查使用ss -ltn 监听端口的套接字(我在Linux 上,这可能不适合你)我意识到php 服务器只监听IPv6。相关输出如下:

State      Recv-Q Send-Q                                              Local Address:Port                                                             Peer Address:Port                
LISTEN     0      128                                                           ::1:8000                                                                       

通过相关搜索,我在用户发布的用户注释下的 Web 服务器文档页面上找到了答案。见帖子here。解决方法是使用 127.0.0.1 而不是 localhost:

事实证明,如果您使用“php -S”启动 php 服务器 localhost:80" 服务器将仅以 ipv6 支持启动!

要通过 ipv4 访问它,您需要更改启动命令,例如 所以:“php -S 127.0.0.1:80”仅以 ipv4 模式启动服务器。

【讨论】:

  • 你是救生员。谢谢。
猜你喜欢
  • 2019-08-15
  • 1970-01-01
  • 2017-02-25
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 1970-01-01
  • 2019-07-15
  • 2010-12-13
相关资源
最近更新 更多