我有一个由OVH托管的VPS,用于NodeJS脚本。 VPS在端口3000上运行Express NodeJS脚本以返回JSON。 我有一个由GoDaddy托管的用于网站的Web服务器。 Web服务器托管我的网站。
我要求网站访问NodeJS脚本并检索返回的JSON数据。
我知道NodeJS脚本可以正常工作,因为我可以在Web浏览器中输入URL,并返回JSON内容并在浏览器中显示。我还在本地托管了我的网站,该网站运行正常。 PHP脚本成功检索到NodeJS JSON数据,并且没有发生错误。
但是,当我将我的网站上传到GoDaddy Web服务器时;我的PHP脚本无法连接到OVH VPS,转储curl_error($ch)
时出现错误:Failed to connect to {vps ip} port 3000: Connection refused
。
我尝试更改URL前缀“ https://”,“ http://”。 我尝试过PHP的file_get_contents(),但出现了类似的问题。
Express服务器运行于:
app.use(cors());
app.get("/server/:id", async (req, res, next) => {
let server = req.params.id;
...
return res.json({ "foo": "bar" });
});
app.listen(3000, () => {
console.log(`>> API Connecting >> 3000`);
});
我的PHP脚本尝试通过以下方式访问以上内容:
$ch = curl_init("http://{OVH VPS IP}/server/12345678");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);
curl_close($ch);
$response = json_decode($result, true);
Id希望$ response是返回的$ result的数组,但是实际上
$result == false
和
$response == NULL
我们非常感谢您的协助!
答案 0 :(得分:0)
尝试像下面这样指定以下函数(IP地址)的第二个参数:
app.listen(3000, '0.0.0.0', () => {
console.log(`>> API Connecting >> 3000`);
});
'0.0.0.0'在所有接口上监听,
当您不指定第二个参数时,'127.0.0.1'可能是默认值