2013-05-08 32 views
6

Gần đây tôi đã tạo một ứng dụng node.js tiếp cận với các trang web truyền thông xã hội và lưu trữ nguồn cấp dữ liệu công khai của chúng tôi. Tôi đang sử dụng một số module npm hiện có để tạo điều kiện truy cập vào phương tiện truyền thông xã hội của api. Nó hoạt động giống như một sự quyến rũ trong môi trường dev của tôi, nhưng trên các yêu cầu môi trường sản xuất của chúng tôi là thời gian ra bởi vì họ cần phải đi qua một proxy.Cách ghi đè lên node.js http để sử dụng proxy cho tất cả các yêu cầu gửi đi

Không cần phải sửa đổi mô-đun npm làm cách nào tôi có thể thực hiện yêu cầu gửi đi qua proxy?

Trả lời

3

Sử dụng thuộc tính http.globalAgent. Điều này sẽ cho phép bạn chặn tất cả các yêu cầu đang chạy trong quá trình của bạn. Sau đó, bạn có thể sửa đổi các yêu cầu đó để được định dạng đúng cho máy chủ proxy.

http://nodejs.org/api/http.html#http_http_globalagent

Một tùy chọn khác là tạo ngoại lệ proxy cho ứng dụng đó.

+3

thể yo u đưa ra một ví dụ về việc sử dụng http.globalAgent Tôi có thể chuyển '{host: 'http.proxy.somewhere.com', cổng: 1234, đường dẫn: 'http://www.google.com'}' làm tùy chọn và hoạt động cho yêu cầu của riêng tôi nhưng tôi đã thử 'http.globalAgent.options = {host: 'http.proxy.somewhere.com', cổng: 1234};' nơi proxy công ty của tôi là 'http: // http .proxy.somewhere.com: 1234' và không hoạt động – jonnie

+1

Có, vui lòng cung cấp ví dụ về định tuyến tất cả các yêu cầu gửi đi thông qua proxy với globalAgent. –

2

Có một mô-đun NPM cho rằng:

https://www.npmjs.com/package/global-tunnel

var globalTunnel = require('global-tunnel'); 

globalTunnel.initialize({ 
    host: '10.0.0.10', 
    port: 8080, 
    sockets: 50 // optional pool size for each http and https 
}); 

Hoặc nếu bạn chỉ muốn yêu cầu một số proxy, bạn có thể sử dụng gói đường hầm (đó là động lực đằng sau đường hầm toàn cầu trên):

https://www.npmjs.com/package/tunnel

var tunnel = require('tunnel'); 

// create the agent 
var tunnelingAgent = tunnel.httpsOverHttps({ 
    proxy: { 
    host: 'localhost', 
    port: 3128 
    } 
}); 

var req = https.request({ 
    host: 'example.com', 
    port: 443, 
    // pass the agent in your request options 
    agent: tunnelingAgent 
}); 
Các vấn đề liên quan