节点js将请求绑定到不同的接口或IP地址

时间:2016-12-17 08:29:03

标签: node.js bind ip-address

我想强制我的节点js app通过特定的接口或IP地址下载。

在使用wget的Linux中,我可以使用以下内容执行此操作:

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

或类似于curl:

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

我目前正在使用request套餐,但我看不到类似的选项,如果必须的话可能会改变。

如何将下载绑定到带有节点js请求的IP地址或接口?

编辑:我在评论中看到了这些问题,但他们似乎没有解决我在请求中如何执行此操作的问题,而且我没有使用快递,因为我的应用没有服务器/网络存在。

1 个答案:

答案 0 :(得分:2)

我有同样的要求,事实证明这很容易。只需使用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