以下の状況を処理するために、単純な HTTPS サーバーをセットアップしました。
https://localhost:5000/
ディレクトリに一致するファイルがあるへのリクエストは、 経由で処理されconnect.static(__dirname)
ます。これは、私の index.html や CSS ファイルなどのすべてでうまく機能し、必要に応じて正確に機能しています。へのリクエストは に
https://localhost:5000/api
リダイレクトする必要がありhttps://subdomain.mydomain.com:443/api
ます。
プロキシは HTTPS 経由ですべてを適切に転送しており、SSL ハンドシェイク部分は期待どおりに機能しているようです。問題は、API がサブドメインを使用して、接続するデータベースと返すデータを決定することです。だから、私のAPIはリクエストを見る
https://localhost:5000/api/something
それ以外の
https://subdomain.mydomain.com/api/something
サブドメインを提供する必要があるというエラーがスローされます。
プロキシを実行するときに、ノード プロキシにドメイン/サブドメインを転送 (または使用) するように指示するにはどうすればよいですか?
これが私のコードです:
var fs = require('fs');
var connect = require('connect'),
https = require('https'),
httpProxy = require('http-proxy'),
options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
},
endpoint = {
host: 'subdomain.mydomain.com',
port: 443,
prefix: '/api',
target: { https: true }
};
var proxy = new httpProxy.RoutingProxy();
var app = connect()
.use(connect.logger('dev'))
.use(function(req, res, next) {
if (req.url.indexOf(endpoint.prefix) === 0) {
proxy.proxyRequest(req, res, endpoint);
} else {
next();
}
})
.use(connect.static(__dirname));
https.createServer(options, app).listen(5000);
console.log('Listening on port 5000');