2

node.js アプリがロード バランシング HAProxy の背後にあり、HTTP と HTTPS の両方のトラフィックをノード サーバーのポート 8000 に転送するシナリオがあります。

残念ながら、これは私をトリッキーな場所に置きます.httpサーバーとhttpsサーバーに同じポートを使用する必要があります. http を https にリダイレクトするだけでも満足できます。

しかし、現在、私は HTTP -- または -- または HTTPS を選択せざるを得ない立場にあります。

コードを含めるために...

https.createServer(api.credentials, api.server).listen(8000);
http.createServer(api.server).listen(8000); // ERR ADDR IN USE
4

2 に答える 2

1

2つのタスクを同じポートでリッスンさせることはできません。HTTPはデフォルトのポート80でリッスンし、HTTPSはデフォルトのポート443でリッスンします。それに応じて転送するようにHAProxyプログラムを管理する必要があります。

次のように構成を設定することをお勧めするこの気の利いたページを見つけました。

グローバル
  統計ソケット./haproxy.statsレベル管理者

フロントエンドft_http
    バインド:80
    モードhttp
    default_backend bk_http

フロントエンドft_https
    バインド:443
    モードtcp
    default_backend bk_https

バックエンドbk_http
    モードhttp
    バランスラウンドロビン
    srcテーブルに固執するbk_https
    default-server inter 1s
    サーバーs1192.168.1.1:80チェックID1
    サーバーs2192.168.1.2:80チェックID2

バックエンドbk_https
    モードtcp
    バランスラウンドロビン
    スティックテーブルタイプIPサイズ200k有効期限30m
    srcに固執する
    default-server inter 1s
    サーバーs1192.168.1.1:443チェックID1
    サーバーs2192.168.1.2:443チェックID2

上記の構成でNode.jsポートが80と443に設定されていることに注意してください。Node.jsには管理者権限がないため、次のように機能するようにポートを編集することをお勧めします。

バックエンドbk_http
    モードhttp
    バランスラウンドロビン
    srcテーブルに固執するbk_https
    default-server inter 1s
    サーバーs1192.168.1.1:8000チェックID1
    サーバーs2192.168.1.2:8000チェックID2

バックエンドbk_https
    モードtcp
    バランスラウンドロビン
    スティックテーブルタイプIPサイズ200k有効期限30m
    srcに固執する
    default-server inter 1s
    サーバーs1192.168.1.1:8001チェックID1
    サーバーs2192.168.1.2:8001チェックID2

また、Node.jsコードを次のように変更する必要があります。

https.createServer(api.credentials、api.server).listen(8001);
http.createServer(api.server).listen(8000);

私はHAProxyに精通していないので、オフになっている可能性があります。

于 2013-03-16T01:21:28.280 に答える