node.js - nodejs - quitar proxy npm
ConfiguraciĆ³n de proxy global Node.js (3)
Estaba trabajando en una red de cultivos detrás de un servidor proxy. En mi código puedo configurar el proxy utilizando el enfoque mencionado en este hilo ( ¿Cómo puedo usar un proxy http con node.js http.Client? ).
Pero el problema es que la mayoría de los módulos de terceros no tienen configuración de proxy y no puedo modificar su código para agregar el proxy. Además, mi código se puede usar en un entorno de conexión directa, lo que significa que no puedo codificar mi configuración de proxy en el código.
Sé que NPM tiene una configuración global para proxy que es
npm config set proxy http://proxy.company.com:8080 npm config set https-proxy http://proxy.company.com:8080
Pero no encontré ninguna configuración similar en Node.js.
¿Node.js admite la configuración de proxy global para que no necesite cambiar todos los códigos y encender y apagar fácilmente.
Finalmente creé un módulo para resolver esta pregunta (parcialmente). Básicamente, este módulo reescribe la función http.request
, agrega la configuración del proxy y luego se http.request
. Revise mi blog: https://web.archive.org/web/20160110023732/http://blog.shaunxu.me:80/archive/2013/09/05/semi-global-proxy-setting-for-node.js.aspx
Si bien no es una configuración de Nodejs, le sugiero que use proxychains, que considero bastante conveniente. Probablemente esté disponible en su gestor de paquetes.
Después de configurar el proxy en el archivo de configuración ( /etc/proxychains.conf
para mí), puede ejecutar proxychains npm start
o proxychains4 npm start
(es decir, proxychains [command_to_proxy_transparently]
) y todas sus solicitudes se procesarán automáticamente.
Configuraciones de configuración para mi:
Estas son las configuraciones mínimas que deberás adjuntar.
## Exclude all localhost connections (dbs and stuff)
localnet 0.0.0.0/0.0.0.0
## Set the proxy type, ip and port here
http 10.4.20.103 8080
(Puede obtener la ip del proxy usando nslookup [proxyurl]
)
Desafortunadamente, parece que la información del proxy se debe establecer en cada llamada a http.request
. El nodo no incluye un mecanismo para la configuración global del proxy.
El módulo global-tunnel-ng
en NPM parece manejar esto, sin embargo:
var globalTunnel = require(''global-tunnel-ng'');
globalTunnel.initialize({
host: ''10.0.0.10'',
port: 8080,
proxyAuth: ''userId:password'', // optional authentication
sockets: 50 // optional pool size for each http and https
});
Después de establecer la configuración global con una llamada para initialize
, tanto http.request
como la biblioteca de requests
utilizarán la información del proxy.
El módulo también puede usar la variable de entorno http_proxy
:
process.env.http_proxy = ''http://proxy.example.com:3129'';
globalTunnel.initialize();