ホームページ  >  に質問  >  本文

web - CGI があるのになぜ Nginx が必要なのでしょうか?

情報を確認した結果、大体のことは理解できました。修正してください:

Web サイトはコンピュータ上で次の分業体制で運営されています。

リーリー

上記の理解は正しいですか? もし正しいとしたら、なぜ Nginx が存在するのでしょうか? Nginx がなくても CGI を直接使ってリクエストを受け付けることができるようです。負荷分散のためだけでしょうか?

###ありがとう。###
漂亮男人漂亮男人2712日前661

全員に返信(7)返信します

  • ringa_lee

    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

    動的言語や Web サーバーの種類が多数あるため、相互に互換性がなく、プログラマにとっては多大な問題を引き起こします。さて、

    、次に何が起こるかはわかります。 。 。 。 CGI应运而僧。CGI的定义是统一网关接口。从此WebServer收到后台动态交互请求就直接发给CGI,CGI发给动态语言,动态语言把结果发回给CGICGI再发回给WebServer

    すると、結論としては、

    したがって、交換可能ではありません。 CGI是一个翻译层,它的功能不是直接提供结果给浏览器,而是翻译来自WebServer的请求并转给后台的应用程序,并且把执行结果翻译成静态网页返回给WebServer

    最後に、急いで書いたので厳密ではない表現も多くありますが、コメント大歓迎です。

    返事
    0
  • 習慣沉默

    習慣沉默2017-05-16 17:29:17

    • 負荷分散
    • リバースプロキシ
    • スムーズなアップグレード
    • 災害復旧の拡大
    • CGI言語タイプを非表示にする
    • ログを記録する
    • gzip

    たくさんありますが、よく考えてみると、少なくとも上記と同じくらいの長さの nginx の他の利点を列挙できると思います

    返事
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-16 17:29:17

    ブラウザとWebサーバー間の通信はHTTPプロトコルです。ブラウザは CGI/FastCGI プロトコルをサポートしていないため、Nginx を放棄して FPM や PHP-CGI などと直接通信することはできません。

    返事
    0
  • 巴扎黑

    巴扎黑2017-05-16 17:29:17

    Nginx は本質的には Web サーバーです。CGI を直接使用すると、この CGI が Web サーバーになり、ロジックが複雑になります。
    CGI は動的ロジックを処理するためのものです。
    Web サーバーは HTTP サービスの単なる実装であり、ロジックに関係なく、リクエストを受信し、対応する応答 (通常は HTML ページ、またはリクエストに応じて他のファイル) を返します。論理的な処理はすべて CGI に丸投げされます。たとえば、ユーザーのログイン認証などです。

    返事
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-16 17:29:17

    Nginx をメッセンジャーとして考えることができます。主な仕事は彼によって行われるのではなく、彼なしで行われます。 実際に仕事をするのは、直接行って仕事を取りに行ったり、引き継ぎをしたりする人たちです。

    あなたにそれができないのではなく、その仕事をする人たちは、その仕事がいかにうまく行われるかだけを気にしたいのです、

    たくさんの用事をこなして、自分の職務をごちゃ混ぜにしたくありません。

    返事
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 17:29:17

    Nginx がなければ、あなたが挙げた 4 つのポイントのうちのポイント 1 を誰も実行できないと思いませんか?

    返事
    0
  • 漂亮男人

    漂亮男人2017-05-16 17:29:17

    静的ファイルは基本的に nginx に渡されて処理されます。
    動的リクエストの場合、nginx はルーティングのレイヤーに相当します。CGI は特定のビジネス ロジックの処理だけに集中する必要があります。

    返事
    0
  • キャンセル返事