情報を確認した結果、大体のことは理解できました。修正してください:
Web サイトはコンピュータ上で次の分業体制で運営されています。
上記の理解は正しいですか? もし正しいとしたら、なぜ Nginx が存在するのでしょうか? Nginx がなくても CGI を直接使ってリクエストを受け付けることができるようです。負荷分散のためだけでしょうか?
カニの悪魔。 Zhihuスタイル まずは为什么CGI与WebServer不能互相替代? 因为CGI是一种标准,Nginx则是一种应用。两者不是同类,所以下面用WebServer代替Nginxの問題を修正してください。
为什么CGI与WebServer不能互相替代?
CGI
Nginx
WebServer
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
翻译来自WebServer的请求并转给后台的应用程序,并且把执行结果翻译成静态网页返回给WebServer
たくさんありますが、よく考えてみると、少なくとも上記と同じくらいの長さの nginx の他の利点を列挙できると思います
ブラウザとWebサーバー間の通信はHTTPプロトコルです。ブラウザは CGI/FastCGI プロトコルをサポートしていないため、Nginx を放棄して FPM や PHP-CGI などと直接通信することはできません。
Nginx は本質的には Web サーバーです。CGI を直接使用すると、この CGI が Web サーバーになり、ロジックが複雑になります。 CGI は動的ロジックを処理するためのものです。 Web サーバーは HTTP サービスの単なる実装であり、ロジックに関係なく、リクエストを受信し、対応する応答 (通常は HTML ページ、またはリクエストに応じて他のファイル) を返します。論理的な処理はすべて CGI に丸投げされます。たとえば、ユーザーのログイン認証などです。
Nginx をメッセンジャーとして考えることができます。主な仕事は彼によって行われるのではなく、彼なしで行われます。 実際に仕事をするのは、直接行って仕事を取りに行ったり、引き継ぎをしたりする人たちです。
たくさんの用事をこなして、自分の職務をごちゃ混ぜにしたくありません。
Nginx がなければ、あなたが挙げた 4 つのポイントのうちのポイント 1 を誰も実行できないと思いませんか?
静的ファイルは基本的に nginx に渡されて処理されます。 動的リクエストの場合、nginx はルーティングのレイヤーに相当します。CGI は特定のビジネス ロジックの処理だけに集中する必要があります。
カニの悪魔。 Zhihuスタイル
まずは
为什么CGI与WebServer不能互相替代?
因为CGI
是一种标准,Nginx
则是一种应用。两者不是同类,所以下面用WebServer
代替Nginx
の問題を修正してください。
動的言語や Web サーバーの種類が多数あるため、相互に互換性がなく、プログラマにとっては多大な問題を引き起こします。さて、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
たくさんありますが、よく考えてみると、少なくとも上記と同じくらいの長さの nginx の他の利点を列挙できると思います
ブラウザとWebサーバー間の通信はHTTPプロトコルです。ブラウザは CGI/FastCGI プロトコルをサポートしていないため、Nginx を放棄して FPM や PHP-CGI などと直接通信することはできません。
Nginx は本質的には Web サーバーです。CGI を直接使用すると、この CGI が Web サーバーになり、ロジックが複雑になります。
CGI は動的ロジックを処理するためのものです。
Web サーバーは HTTP サービスの単なる実装であり、ロジックに関係なく、リクエストを受信し、対応する応答 (通常は HTML ページ、またはリクエストに応じて他のファイル) を返します。論理的な処理はすべて CGI に丸投げされます。たとえば、ユーザーのログイン認証などです。
Nginx をメッセンジャーとして考えることができます。主な仕事は彼によって行われるのではなく、彼なしで行われます。 実際に仕事をするのは、直接行って仕事を取りに行ったり、引き継ぎをしたりする人たちです。
あなたにそれができないのではなく、その仕事をする人たちは、その仕事がいかにうまく行われるかだけを気にしたいのです、たくさんの用事をこなして、自分の職務をごちゃ混ぜにしたくありません。
Nginx がなければ、あなたが挙げた 4 つのポイントのうちのポイント 1 を誰も実行できないと思いませんか?
静的ファイルは基本的に nginx に渡されて処理されます。
動的リクエストの場合、nginx はルーティングのレイヤーに相当します。CGI は特定のビジネス ロジックの処理だけに集中する必要があります。