在后台模式下执行时,CURL返回502代理错误

时间:2019-08-11 12:53:31

标签: php node.js apache

我在运行apache(php)的同一台服务器上创建了一个由PM2管理的NodeJS API。

对于我来说,我需要将proxyPass命令添加到000-default.conf文件中:

ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full

<Proxy *>
Require all granted
</Proxy>

<Location /node_api>
ProxyPass http://127.0.0.1:3569
ProxyPassReverse http://127.0.0.1:3569
</Location>

我的代码运行完美,如果我要访问php,我只需输入服务器的IP,如果要访问Node中的API,则只需使用服务器的IP + /node_api

就我而言,PHP需要向节点API发送CURL请求并保存结果,因此我在下面创建了此命令:

$chNodePrintDesktop = curl_init('http://THE_IP_OF_MY_SERVER/node_api/requestdata/');
curl_setopt($chNodePrintDesktop, CURLOPT_HEADER, 0);
curl_setopt($chNodePrintDesktop, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($chNodePrintDesktop, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($chNodePrintDesktop, CURLOPT_TIMEOUT, 0);
curl_setopt($chNodePrintDesktop, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); 
curl_setopt($chNodePrintDesktop, CURLOPT_POSTFIELDS, "urlsite=http://stackoverflow.com");
$dataNodePrintDesktop = curl_exec($chNodePrintDesktop);
curl_close($chNodePrintDesktop);

echo $dataNodePrintDesktop;

该代码运行良好,并从API返回预期结果。但是有一个问题...当相同的代码由php通过以下代码在后台模式下执行时:

exec("php {$filePath} > /dev/null &");

CURL返回代理错误( 502代理错误):

  

代理服务器从上游服务器收到无效响应。   代理服务器无法处理请求   POST / node_api / requestdata /。原因:从远程读取错误   服务器

我的问题是,当我尝试通过服务器上的URL运行CURL时为什么不返回此错误?为什么当同一代码在后台模式下运行时,我收到代理错误消息?

注意:值得一提的是,我在本地服务器(wampserver)上测试了CURL代码,并在此代码上完美地返回了结果(没有任何代理错误)

我该如何解决?

0 个答案:

没有答案