2016-12-17 5 views
1

Я хочу заставить приложение node js загружаться через определенный интерфейс или IP-адрес.Узел js привязывает запрос к другому интерфейсу или IP-адресу

В Linux с Wget я могу сделать это с чем-то вроде этого:

wget --bind-address=192.168.21.21 http://example.com 

или аналогично с завитком:

curl --interface 192.168.21.21 --ipv4 http://example.com 

Я в настоящее время использую request пакет, но я не могу видеть, аналогичный вариант и может измениться от этого, если бы мне пришлось.

Как связать мою загрузку с IP-адресом или интерфейсом с запросом узла js?

Редактировать: Я видел вопросы в комментариях, но они, похоже, не затрагивают мой вопрос о том, как это сделать в запросе, и я не использую expressjs, поскольку мое приложение не имеет сервера/веб-присутствия.

+1

Я считаю, что вы имеете в виду этот вопрос SO http://stackoverflow.com/questions/9986220/bind-expressjs-to-a-specific-ip-address –

+1

Возможный дубликат [Как указать сетевой интерфейс при создании сетевые запросы от Node.js?] (http://stackoverflow.com/questions/13602066/how-to-specify-a-network-interface-when-making-net-requests-from-node-js) – Tomalak

+1

См. мое редактирование, я ищу решение с запросом node.js. Если на мой вопрос отвечает тот, о котором говорил Барри Дик, я не понимаю, как его реализовать. – user1464409

ответ

0

У меня было такое же требование, и, оказывается, это действительно легко сделать. Просто используйте опцию localAddress в request (это тот же вариант, как в http модуле):

(async() => { 

    let request = require('request-promise-native'); // (a promisified version of request module) 

    // This prints your machine's IP 
    console.log(await request({ uri: 'https://api.ipify.org' })); 

    // This prints '***.***.***.***' 
    console.log(await request({ uri: 'https://api.ipify.org', localAddress: '***.***.***.***' })); 

})(); 

(Заменить ***.***.***.*** с новым статическим IP)

Обратите внимание, что вы, конечно, нужно уже установили ваш статический IP-адрес и настроил его в вашей ОС. В случае, если это помогает любому, с Ubuntu 16.04 вы бы просто добавить это в конец файла /etc/network/interfaces:

auto ens3:0 
iface ens3:0 inet static 
    address ***.***.***.*** 
    netmask 255.255.254.0 

(Опять же, замените ***.***.***.*** с IP) Подробнее here.

 Смежные вопросы

  • Нет связанных вопросов^_^