簡體   English   中英

Node.js http代理允許HTTPS

[英]Node.js http-proxy allow HTTPS

我有一個創建代理服務器並在訪問頁面時返回 url 請求的應用程序,但它僅適用於 http web 頁面,當我嘗試訪問 https 地址時,瀏覽器中出現Secure Connection Failed

為了解決這個問題,我從這里localhost:8080生成了一個自簽名證書,但仍然無法訪問受保護的 web 頁面...

這是我的代碼:

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

var proxy = httpProxy.createServer({
  ssl: {
    key:  fs.readFileSync('ssl_key_8080.pem', 'utf8'),
    cert:  fs.readFileSync('ssl_cert_8080.pem', 'utf8')
  },
  target:'https://localhost:8080',
  secure: true
});

proxy.listen(443);

var http = require('http');

http.createServer(function (req, res) {
  var options = {
    target: 'http://' + req.headers.host,
  };
  req.host = req.headers.host;
  proxy.web(req, res, options, function(err){
    console.log('err', err)
  });
}).listen(8080);

proxy.on('proxyReq', function (proxyReq, req, res) {
  console.log('request url', JSON.stringify(req.url, true, 2));
});

有什么我做的不對嗎? 我按照http-proxy 文檔中的說明進行操作

問題是您有一個自簽名證書,並且您在代理設置 object 中使用安全標志,來自文檔

您可以激活對目標連接的安全 SSL 證書的驗證(避免自簽名證書),只需在選項中設置 secure: true 即可。

    var proxy = httpProxy.createServer({
  ssl: {
    key:  fs.readFileSync('ssl_key_8080.pem', 'utf8'),
    cert:  fs.readFileSync('ssl_cert_8080.pem', 'utf8')
  },
  target:'https://localhost:8080',
  secure: true
});

如果刪除安全標志,您可能會在瀏覽器中收到一條錯誤消息,提示該路由不安全。

在您的代碼的上下文中。

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

var proxy = httpProxy.createServer({
  ssl: {
    key:  fs.readFileSync('ssl_key_8080.pem', 'utf8'),
    cert:  fs.readFileSync('ssl_cert_8080.pem', 'utf8')
  },
  target:'https://localhost:8080'
});

proxy.listen(443);

var http = require('http');

http.createServer(function (req, res) {
  var options = {
    target: 'http://' + req.headers.host,
  };
  req.host = req.headers.host;
  proxy.web(req, res, options, function(err){
    console.log('err', err)
  });
}).listen(8080);

proxy.on('proxyReq', function (proxyReq, req, res) {
  console.log('request url', JSON.stringify(req.url, true, 2));
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM