1

私は Linode VPS を持っており、現在 lighttpd を実行して PHP Web サイトを提供し、ポート 80 でリッスンしています。

また、ポート 81 でリッスンし、websockets と HTTP を使用してクライアントと対話する Node.js も実行しています。

このサーバーを指すようにしたいドメインがいくつかあります。理想的には、PHP サイトをホストするドメインがすべて同じ lighttpd サーバーと通信するようにし、node.js を使用するサイトがクライアントに知られていない状態で node.js がリッスンしているポートに何らかの方法でリダイレクトすることを望みます (たとえば、30x リダイレクトはありません)。 )。

example-php1.com:80 -> linodebox:80 lighttpd /var/www/example1
example-php2.com:80 -> linodebox:80 lighttpd /var/www/example2
example-node.com:80 -> linodebox:81 node.js

DNSエントリを設定するか、iptablesを調整することで、これを行う方法はありますか? lighttpd は node.js のプロキシである必要がありますか? Websockets 機能は、フォールバックなしで機能する必要があり、ノード以外のドメインにアクセスした場合 (例:example-php1.com:81ノード アプリケーションが公開されないようにする必要があります)。

完璧なソリューションは、既存のアプリケーション コードを変更したり、ソフトウェア Web サーバー間のプロキシを必要としないと思いますが、間違っている可能性があります。

4

3 に答える 3

1

どうしたトム!?

HA-Proxy をお勧めします。これは最も高性能なプロキシの 1 つであり、目的を達成できるはずです。

プロキシとして機能するnginxで同様のことを行っています。簡単ですが、最速ではありません。

HA-Proxy の Web サイトはこちらhttp://haproxy.1wt.eu

「純粋な」ソリューションが必要な場合は、ha-proxy のソース コードを見れば答えが得られるでしょう。iptablesでは実際にはできません。HTTP ヘッダーを読み取って、リクエストの送信元を特定し、ローカルにルーティングする必要があります。

于 2012-12-23T16:53:52.013 に答える
0

Ya'llは私を憎むつもりです...

最終的に2番目のIPアドレスを使用し、Linodeチュートリアルに従って複数の静的IPをセットアップしました。次に、lighttpdを1つのIPアドレスにバインドするように構成し、Node.jsを別のIPアドレスにバインドするように構成しました。

これは拡張性がないため、優れたソリューションではありません。

于 2012-12-24T01:28:19.340 に答える
0

私は基本的に同じ問題を抱えていて、最終的にnode-http-proxyを使用しました( npm としても利用可能ですhttp-proxy)。

シンプルな設定ファイルが必要です:

{
  ルーター: {
    'example-php1.com': 'linodebox:80',
    'example-php2.com': 'linodebox:80',
    'example-node.com': 'linodebox:81
  }
}

次に、実行するだけでnode-http-proxy --config options.json準備完了です。lighttpd とノードを同じマシンで実行したい場合は、別のポートで lighttpd を起動する必要があります (私は php に 81 を使用し、ノードに 3000 を使用しています - 構成の調整は簡単です)。また、ノード インスタンスを管理するために永遠に使用しています。

于 2012-12-23T17:01:16.627 に答える