5

node.js 0.8 では、次のように構成された「ルーター テーブル」モードで node-http-proxy を使用しています。

var httpProxy = require("http-proxy");
var config = require("./config");

proxyServer = httpProxy.createServer({
    hostnameOnly: true,
    router: {
        "one.example.com": "localhost:9000",
        "two.example.com": "localhost:9001"
    },
    https: {
        key: config.key,
        cert: config.cert,
        // mitigate BEAST: https://community.qualys.com/blogs/securitylabs/2011/10/17/mitigating-the-beast-attack-on-tls
        honorCipherOrder: true,
        ciphers: "ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH"
    }
})
proxyServer.listen(8000)

HSTS (HTTP Strict Transport Security)を追加して、準拠しているブラウザーが常に SSL を使用するように指示されるようにしたいと考えています。これを行うには、ヘッダーを追加するために http-proxy を取得する必要があります。

Strict-Transport-Security: max-age=60000

(または他の最大年齢)。node-http-proxy にこのヘッダーを効率的に追加するにはどうすればよいですか?

4

1 に答える 1

4

あなたの例では、この古い質問が使用しているように見えるのでわかりませんhttp-proxy@0.8。ただし、ここで私が行ったことは次のhttp-proxy@1.0.0とおりです。

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

// https server to decrypt TLS traffic and direct to a normal HTTP backend
var proxy = httpProxy.createProxyServer({
  target: {
    host: 'localhost',
    port: 9009 // or whatever port your local http proxy listens on
  },
  ssl: {
    key: fs.readFileSync('valid-ssl-key.pem', 'utf8'),
    cert: fs.readFileSync('valid-ssl-cert.pem', 'utf8')
  }
}).listen(443); // HTTPS listener for the real server

// http server that redirects all requests to their corresponding
// https urls, and allows standards-compliant HTTP clients to 
// prevent future insecure requests.
var server = http.createServer(function(req, res) {
  res.statusCode = 301;
  res.setHeader('Location', 'https://' + req.headers.host.split(':')[0] + req.url);
  res.setHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains');
  return res.end();
});

server.listen(80); // HTTP listener for the old HTTP clients
于 2015-03-27T04:54:44.587 に答える