情報を確認した結果、大体のことは理解できました。修正してください:
Web サイトはコンピュータ上で次の分業体制で運営されています。
リーリー上記の理解は正しいですか? もし正しいとしたら、なぜ Nginx が存在するのでしょうか? Nginx がなくても CGI を直接使ってリクエストを受け付けることができるようです。負荷分散のためだけでしょうか?
###ありがとう。###ringa_lee2017-05-16 17:29:17
カニの悪魔。 Zhihuスタイル
まずは为什么CGI与WebServer不能互相替代?
因为CGI
是一种标准,Nginx
则是一种应用。两者不是同类,所以下面用WebServer
代替Nginx
の問題を修正してください。
CGI
是一种标准,Nginx
はアプリケーションです。
浏览器
的角度来看,浏览器只负责发送请求,接收来自WebServer
的返回结果并渲染之。对于WebServer
来讲,它需要做的仅仅是接收请求,寻找浏览器
からファイルがリクエストされ、返送されました。これさえあれば、世界は完璧になるでしょう。
しかし、次に何が起こったかは誰もが知っています。 。私たちは静的な Web ページを閲覧するだけでなく、フォーラムにログインし、悪口を投稿し、回答に反対票を投じて評判を得るなどの作業も行う必要があります。これらの動作は、静的 HTML では実現できません。そのため、JS、Flash、その他のフロントエンドベースのインタラクティブテクノロジーがあります。 WebServer
把包含了这些代码的文件发给浏览器
、後者はそれをどのように見えるべきか (または、IE6 などのように見えてはいけないもの) に解析し、ページ上でアニメーションを確認できます。これらはフロントエンド インタラクション テクノロジと呼ばれます。
ただし、インタラクティブなフロントエンドには実行できないものもあります。たとえば、前回は高解像度の無修正の写真を投稿しました。投稿者のような、素晴らしい人だなどのみんなの反応が見たいのです。その場合、このテクノロジーには が必要です。データベースを使用しますが、データベース自体は動作するために別の言語を必要とします。この言語は Python、prel、Ruby、PHP などと呼ばれます。後者はブラウザに渡されます。 动态语言
。他们对数据库进行增删查改四大操作,并且返回结果给WebServer
、次に何が起こるかはわかります。 。 。 。 CGI
应运而僧。CGI
的定义是统一网关接口。从此WebServer
收到后台动态交互请求就直接发给CGI
,CGI
发给动态语言,动态语言把结果发回给CGI
,CGI
再发回给WebServer
したがって、交換可能ではありません。 CGI
是一个翻译层,它的功能不是直接提供结果给浏览器,而是翻译来自WebServer的请求并转给后台的应用程序,并且把执行结果翻译成静态网页返回给WebServer
習慣沉默2017-05-16 17:29:17
たくさんありますが、よく考えてみると、少なくとも上記と同じくらいの長さの nginx の他の利点を列挙できると思います
淡淡烟草味2017-05-16 17:29:17
ブラウザとWebサーバー間の通信はHTTPプロトコルです。ブラウザは CGI/FastCGI プロトコルをサポートしていないため、Nginx を放棄して FPM や PHP-CGI などと直接通信することはできません。
巴扎黑2017-05-16 17:29:17
Nginx は本質的には Web サーバーです。CGI を直接使用すると、この CGI が Web サーバーになり、ロジックが複雑になります。
CGI は動的ロジックを処理するためのものです。
Web サーバーは HTTP サービスの単なる実装であり、ロジックに関係なく、リクエストを受信し、対応する応答 (通常は HTML ページ、またはリクエストに応じて他のファイル) を返します。論理的な処理はすべて CGI に丸投げされます。たとえば、ユーザーのログイン認証などです。
我想大声告诉你2017-05-16 17:29:17
Nginx をメッセンジャーとして考えることができます。主な仕事は彼によって行われるのではなく、彼なしで行われます。
実際に仕事をするのは、直接行って仕事を取りに行ったり、引き継ぎをしたりする人たちです。
たくさんの用事をこなして、自分の職務をごちゃ混ぜにしたくありません。
漂亮男人2017-05-16 17:29:17
静的ファイルは基本的に nginx に渡されて処理されます。
動的リクエストの場合、nginx はルーティングのレイヤーに相当します。CGI は特定のビジネス ロジックの処理だけに集中する必要があります。