Неудачное соединение через cURL с URL-адресом NodeJS Express

У меня есть 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

Любая помощь ОЧЕНЬ приветствуется!

На этот вопрос будет сложно ответить без дополнительных сведений о вашем веб-сервере. Находятся ли PHP и Node.js на одном сервере или на двух разных серверах? Если это два разных сервера, вам необходимо убедиться, что CORS включен на стороне Node.js.

mralanlee 08.02.2019 01:26

Я отредактировал сервер NodeJS для использования CORS. Однако ошибки все еще сохраняются. @мраланли

Soull 08.02.2019 01:47

на вашем VPS у вас работает nginx? Мне любопытно посмотреть, управляет ли это вашими текущими маршрутами сервера.

mralanlee 08.02.2019 02:01

Я полагаю, что это может быть проблема на стороне хоста моего сайта? Я попытался использовать завиток на своем локальном компьютере для подключения к URL-адресу, а также попытался использовать завиток на моем веб-сайте, на котором размещены SSH. Моя локальная машина возвращает содержимое сайта; НО веб-сайт, на котором размещен SSH, возвращает «curl: (7) не удалось подключиться к хосту» @mralanlee

Soull 08.02.2019 02:04

это возможно, особенно если в фоновом режиме работает что-то вроде nginx, который на самом деле управляет исходящими разрешениями.

mralanlee 08.02.2019 02:08

@mralanlee Я искренне смущен тем, почему это не работает. Я не понимаю, почему curl работает на моей локальной машине, но не на моем веб-сервере...

Soull 08.02.2019 02:27

Возможно, сервер GD не может подключиться к граничному маршрутизатору GD. Вы можете войти на свой веб-сервер? Если еще нет, попробуйте подключиться через telnet к вашему серверу NodeJS через порт 3000.

YvesLeBorg 08.02.2019 03:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
7
566
1

Ответы 1

Попробуйте указать второй аргумент функции ниже (IP-адрес) следующим образом:

app.listen(3000, '0.0.0.0', () => {
    console.info(`>> API Connecting          >> 3000`);
});

«0.0.0.0» прослушивается на всех интерфейсах,

«127.0.0.1», вероятно, является значением по умолчанию, если вы не указываете второй аргумент.

Другие вопросы по теме