2017-05-11 12 views
2

PHPでは、HTTPサーバーとしてApache(またはNginx)を使用しています。これらは、PHP Web開発のための事実上の標準設定でもあります。Webサーバーfor RustあたかもApacheからPHPへ

ウェブ上のほとんどすべての例は、 "Cargo run"コマンドで独自のHTTPサーバー(または "ハイパー"ライブラリ)を実行し、ブラウザーでlocalhostに移動して結果を確認することです。誰もApache/Nginxにそれを配備していないようです。

なぜRustプログラムは、非常に多くの有用で成熟した機能(例:VirtualHost、Alias、SSL、mod_rewriteなど)を提供する既存のHTTPサーバーに配備されていないのですか?

また、Apache/NginxよりこのWebサーバーを使用する利点は何ですか?

生産環境では、RustのWebサーバーとしてハイパーライブラリも使用しますか?

+3

かなり興味深い質問ですが、主に意見に基づいています。また、 'cargo run'がサーバーであると誤解しています。これは間違っています。最も一般的なHTTPライブラリは 'hyper'であり、それはライブラリです。 Node.jsなどの他のテクノロジーと同様に、プロダクションの一部のシステムで複数のコンポーネントを編成したり、セキュリティレイヤーを追加したりすることはありますが、専用のHTTPサーバーを正確には必要としません。 –

+0

訂正していただきありがとうございます。私はRustには新しく、Webサーバープログラムの名前を知らないので、 "Cargo run"を引用符で囲みます。私は質問でそれを修正しました。しかし、なぜその質問は「意見に基づく」ものなのでしょうか? – LazNiko

答えて

5

PHP以外のアプリケーションでWebアプリケーションを作成する際の一般的なアプローチは、公開用サーバーとしてApacheまたはNGINXを使用することです。 ApacheやNGINXのいずれかに仮想ホストを設定して、Webアプリケーション(Rust、Golang、Python、Node.jsなど)にすべての接続を転送するリモートプロキシとして機能させます。ローカルホスト上の非80ポートにバインドされたサーバー。

+++++++++++++++++++++++ SERVER +++++++++++++++++++++++++++++++++++ 
+ [Web Application (bound to localhost:8080)]     + 
+      /|\          + 
+      | reverse proxy connection    + 
+      \|/          + 
+ [NGINX (bound to remote_address::80 and remote_address:443)] + 
+++++++++++++++++++++++++/|\+++++++++++/|\++++++++++++++++++++++++ 
          |    | 
         \|/   \|/ 
        ++++++++++++ ++++++++++++ 
        + CLIENT + + CLIENT + 
        ++++++++++++ ++++++++++++ 

このアプローチは、あなたが言っているように(一般的に)、より安全な、あなたは簡単に成熟したWebサーバの機能を使用することができます(例えばSSL、ロード・バランシング:(ラフ)のビジュアル例えば

、など)、堅牢なWebサーバーを作成するのではなく、堅牢なWebアプリケーションを作成することに集中することができます。

NGINXをリバースプロキシとして設定する方法については、this articleを参照してください。 Apacheは同じように機能しますが、Webアプリケーションを作成してスタックするときにNGINXが選択するWebサーバーとなる傾向があります。そのような速度と比較的軽量であるためです。

このアーキテクチャとPHPとApacheの違いは、PHPが「外部モジュール」ではなく「拡張モジュール」として動作するということだけです"実際、NGINXでPHPを使用する場合は、この記事で説明したのと非常によく似た方法で設定する必要があります。

+0

非常にクリアです。ありがとうございました。 – LazNiko

+1

もう1つのオプションは、HTTPのプロキシと多少似ていますが、FastCGI https://softwareengineering.stackexchange.com/questions/178698/web-interface-with-fastcgi-or-with-direct-http –

+0

@JoshLeeです。 – Treebasher

関連する問題