2017-06-22 156 views
0

我有问题让https使用节点http-proxy。节点http代理和HTTPS

我创建使用节点HTTP服务器

forever /usr/local/lib/node_modules/http-server/bin/http-server /home/blah/public_html/ -p 5000 -S -C /myencrypt/blah.com/cert.pem -K /myencrypt/blah.com/privkey.pem 

如果我去https://blah.com:5000的证书是正常工作的服务器。

如果我去blah.com我收到以下错误

Error: unable to verify the first certificate 
    at TLSSocket.<anonymous> (_tls_wrap.js:1088:38) 
    at emitNone (events.js:86:13) 
    at TLSSocket.emit (events.js:188:7) 
    at TLSSocket._finishInit (_tls_wrap.js:610:8) 
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:440:38) 

缺少什么我在这里?

var fs = require('fs'); 
var http = require('http'); 
var https = require('https'); 
var httpProxy = require('http-proxy'); 

var proxy = httpProxy.createProxy(); 
var options = { 
    'blah.com':{ 
    target:'https://blah.com:5000', 
    ssl:{ 
     key:fs.readFileSync('/myencrypt/blah.com/privkey.pem', 'utf8'), 
     cert:fs.readFileSync('/myencrypt/blah.com/cert.pem', 'utf8') 
    } 
    } 
} 

http.createServer(function(req, res) { 
    proxy.web(req, res, { 
    target: options[req.headers.host].target, 
    ssl : options[req.headers.host].ssl 
    }); 
}).listen(80); 

回答

0

我决定来解决使用redbird

var redbird = require('redbird')({ 
    port: 80, 
    secure:false, 
    ssl: { 
     port:443, 
     key: "/myencrypt/blah.com/privkey.pem", 
     cert: "/myencrypt/blah.com/cert.pem", 
    } 
}); 

redbird.register('blah.com', 'https://blah.com:5000', { 
    ssl: { 
     key: "/myencrypt/blah.com/privkey.pem", 
     cert: "/myencrypt/blah.com/cert.pem", 
    } 
}); 
我的问题