У меня есть VPS, размещенный с OVH для скрипта NodeJS. VPS запускает сценарий Express NodeJS на порту 3000 для возврата JSON. У меня есть веб-сервер, размещенный на GoDaddy для веб-сайта. На веб-сервере размещен мой сайт.
Мне нужно, чтобы веб-сайт обращался к скрипту NodeJS и извлекал возвращаемые данные JSON.
Я ЗНАЮ, что сценарий NodeJS работает, поскольку я могу ввести URL-адрес в свой веб-браузер, и содержимое JSON возвращается и отображается в браузере. Я ТАКЖЕ разместил свой сайт локально, и сайт работает отлично. Сценарий PHP успешно извлекает данные NodeJS JSON, и ошибок не возникает.
ОДНАКО, когда я загружаю свой веб-сайт на веб-сервер GoDaddy; мой PHP-скрипт не может подключиться к OVH VPS, и при сбросе curl_error($ch) я получаю сообщение об ошибке: Failed to connect to {vps ip} port 3000: Connection refused.
Я пытался изменить префикс URL-адресов «https://», «http://». Я пробовал PHP file_get_contents() с аналогичной проблемой.
Экспресс-сервер работает на:
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.info(`>> 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);
Я бы ожидал, что $response будет массивом возвращаемого $result, однако на самом деле
$result == false
и
$response == NULL
Любая помощь ОЧЕНЬ приветствуется!
Я отредактировал сервер NodeJS для использования CORS. Однако ошибки все еще сохраняются. @мраланли
на вашем VPS у вас работает nginx? Мне любопытно посмотреть, управляет ли это вашими текущими маршрутами сервера.
Я полагаю, что это может быть проблема на стороне хоста моего сайта? Я попытался использовать завиток на своем локальном компьютере для подключения к URL-адресу, а также попытался использовать завиток на моем веб-сайте, на котором размещены SSH. Моя локальная машина возвращает содержимое сайта; НО веб-сайт, на котором размещен SSH, возвращает «curl: (7) не удалось подключиться к хосту» @mralanlee
это возможно, особенно если в фоновом режиме работает что-то вроде nginx, который на самом деле управляет исходящими разрешениями.
@mralanlee Я искренне смущен тем, почему это не работает. Я не понимаю, почему curl работает на моей локальной машине, но не на моем веб-сервере...
Возможно, сервер GD не может подключиться к граничному маршрутизатору GD. Вы можете войти на свой веб-сервер? Если еще нет, попробуйте подключиться через telnet к вашему серверу NodeJS через порт 3000.






Попробуйте указать второй аргумент функции ниже (IP-адрес) следующим образом:
app.listen(3000, '0.0.0.0', () => {
console.info(`>> API Connecting >> 3000`);
});
«0.0.0.0» прослушивается на всех интерфейсах,
«127.0.0.1», вероятно, является значением по умолчанию, если вы не указываете второй аргумент.
На этот вопрос будет сложно ответить без дополнительных сведений о вашем веб-сервере. Находятся ли PHP и Node.js на одном сервере или на двух разных серверах? Если это два разных сервера, вам необходимо убедиться, что CORS включен на стороне Node.js.