Pegándome con node.js y los proxies. El gestor de paquetes npm sí dispone de una variable global que la configuras con la información de tu proxy y ya está. Pero node, no. Es proyecto a proyecto.

En la comunidad hay un pequeño riachuelo de tinta al respecto: https://github.com/nodejs/node/issues/1490

Yo no tengo tiempo de esperar a que se decidan, así que he encontrado una buena solución por mi cuenta. Gracias a TooTallNate tenemos el módulo proxy-agent https://github.com/TooTallNate/node-proxy-agent que funciona perfectamente.

Este es mi pequeño how-to:

En tu proyecto instalas el módulo con el comando npm –save install proxy-agent

En tu código donde uses http, request, o request-promise, tienes que añadir lo siguiente:

var ProxyAgent = require('proxy-agent');
var proxyUri = process.env.http_proxy || 'http://proxy:port' ; //sustituye proxy:port por los tuyos

Luego cuando vas a hacer la llamada, hay que añadir esto a los parámetros.
agent:new ProxyAgent(proxyUri)

O lo haces en una variable opciones…

;var options = {
method: 'GET',
uri: 'http://www.algo.net' ,
resolveWithFullResponse: true,
json: true,
agent:new ProxyAgent(proxyUri) // esta para lo del proxy
};

Que luego invocas, aquí por ejemplo con request-promise:

var rp = require('request-promise');
return rp(options);

Aquí con http:

var http = require('http');
http.get(options, onresponse);

… o lo haces poniendo el parámetro directamente en la llamada:

rp({ url:url, json:true, agent:new ProxyAgent(proxyUri) });