これを同じポートで実行しようとしている場合、これはnode.js の同じポートで HTTP および HTTPS トラフィックをバインドするのとほとんど同じです。.
ただし、複数のポート (HTTP 用に 1 つと HTTPS 用に 1 つ) がある場合は、サーバーのインスタンスを 2 つだけ起動してみることができます。2 つのアプリ (同じノード ファイルで実行できます) を作成します。1 つは実際の API 用で、次に staticApp と呼ばれる静的コンテンツを提供するための小さなアプリです。次に、API サーバーを起動するためのコードは同じであり、次を使用できます。
http.createServer(app).listen(app.get('port'), function(){
console.log("Static server listening on port " + app.get('port'));
});
混乱を避けるために、API サーバーの「ポート」変数の名前を「ssl-port」などに変更して、混乱しないようにすることもできます。
これにより、実質的に 2 つのサーバーが作成されます。1 つは HTTP 経由で静的コンテンツを提供し、元の API サーバーは HTTPS 経由で提供します。ポートがプロトコルによって暗黙的に解釈されるように、80/443 (標準) を使用していることを確認してください (つまり、 http: //mydomain.comとhttps://mydomain.comは適切な場所に移動します)。ロードバランサーまたはトラフィックをプロキシしているものはすべて、適切なプロトコルを適切なポートに送信しています。
これにより、HTTP 経由で API にアクセスしようとする人に 404 (ほとんどの場合) が返されることに注意してください。その解決策は、https プロトコルを使用してユーザーを同じパスにリダイレクトする API エンドポイント (構造が設定されている場合は api/* のようなもの) に一致する汎用ルートを追加することです。
あなたのコメントに応えて
2 つのファイルで 2 つのアプリケーションを作成するには、次のようにします。
var api = express();
api.configure(function(){
app.set('ssl_port', [your https port]);
//your api code
});
var static = express();
static.configure(function () {
app.set('port', [your http port]); // Set the port
app.use(express.static(path.join(__dirname, 'static'))); //This will serve everything inside '/static' as static content
})
2 つのサーバーも作成します。
//HTTPS Api Server
https.createServer(https_options, app).listen(app.get('ssl_port'), function(){
console.log("Api server listening on port " + app.get('ssl_port'));
});
//HTTP Static Server
http.createServer(static).listen(static.get('port'), function () {
console.log('Static server listening on %s', static.get('port'));
});