検索

Nginx (エンジンxと発音)は、ロシアのソフトウェアエンジニアIgorによって開発されたソフトウェアです Sysoevによって書かれたオープンソースのwebサーバー。 2004年のリリース以来、nginxは、高性能、高同時実行性、低メモリ使用量に重点を置いており、負荷分散やキャッシュ、アクセス、帯域幅の制御、およびさまざまなアプリケーションと効果的に統合する機能により、nginxは最新のウェブサイトアーキテクチャにとって良い選択となります。現在、nginxは、インターネット上で最も人気のあるwebサーバーソフトウェアのリストで2位にランクされています。 1.

なぜ高い同時実行性がそれほど重要なのでしょうか? 現在、インターネットは非常に人気があり、どこにでも普及していますが、これは10

年前には想像するのが難しかったことを私たちは知っています。さらに、クリック可能なテキストは、

NCAS (訳者注: National Center for Supercomputer Applications ) に基づいた単純な HTML から Apache ベースに生成されるため、 ウェブサービスの大きな進化により、インターネットは世界中の2人のネットユーザーにとって共通のコミュニケーションメディアとなりました。コンピューター、モバイル デバイス、そして最近ではタブレットの拡大を続ける普及により、インターネット空間と経済全体の有線デジタル化が急速に変化しています。オンライン サービスもさらに詳細になり、リアルタイムで効果的な生活情報やエンターテイメント情報が提供されています。そして、オンライン ビジネスのセキュリティ面にも大きな変化が生じています。その結果、Web サイトは以前よりも複雑になり、インターネットをより堅牢かつスケーラブルにするために、より多くのエンジニアリング作業が必要になりました。 Web サイトのアーキテクチャにおける最大の課題は同時実行性です。 Network サービスの開始当初から、同時実行レベルは増加し続けてきました。 Web サイトが同時に数百、数千、さらには数百万のユーザーにサービスを提供することも珍しくありません。 10 年前、同時実行の原因はクライアントの遅さでした

- 当時、

ユーザーは接続に ADSL またはダイヤルアップを使用していました 現在では 同時実行はモバイル クライアントによって駆動されており、一部のクライアントではpersist through ニュース、ツイート、友人メッセージなどを更新するために接続する、更新されたアプリケーション アーキテクチャの組み合わせ。同時実行性の増加を引き起こすもう 1 つの要因は、最新のブラウザーが Web ページを読み込むために同時に Web サイトに対して 4 から 6 の接続を開き、ページの読み込み速度を上げることです。 クライアントが遅い場合の問題を説明するために、100kサイズの応答テキストまたは画像を生成できる

apache

に基づく単純なwebサービスがあると仮定します。サービス このページの生成またはクエリにはほんの 1 秒しかかかりませんが、80kbps (10kB/s) 帯域幅を持つクライアントでは、このリクエストを送信するのに 10 秒かかります。 web サービスは 100k コンテンツをすぐにプルできましたが、接続が解放されるまでに 100k コンテンツを送信するのに 10 秒かかりました。ここで、同様のコンテンツをリクエストする同時接続クライアントが 1M 割り当てられている場合、これらの 1000クライアントを満たすには、100K のリクエストが必要になると想定します。 には1000M (1G)の追加メモリが必要です。実際、apacheに基づく標準のwebサービスは、通常、接続ごとに1Mを超えるメモリを割り当てますが、悲しいことに、モバイル通信の実効速度はわずか数十 kpbsです。遅いクライアントにコンテンツを送信する問題は、オペレーティング システム カーネルの socket バッファリングによってある程度軽減される可能性がありますが、これは普遍的な解決策ではなく、予期せぬ悪影響を与える可能性があります。 永続的な接続の処理により、同時実行の問題がより顕著になります。これは、http接続の再作成によって引き起こされる遅延を回避するために、クライアントは常にwebサーバーに接続したままにする必要があるためです。 , web サービスは、接続ごとに追加のメモリ空間も割り当てます。

したがって、ユーザー数の増加によって引き起こされる増加する負荷を継続的に処理し、より高い同時実行性を得るには、一連の非常に高性能なモジュールに基づいて Web サイトを構築する必要があります。ただし、ハードウェア(CPU、メモリハードディスク)、ネットワーク容量、アプリケーションおよびデータストレージアーキテクチャなどの他の部分も明らかに同様に重要であり、ウェブサーバーを決定します。受け入れられ処理されたクライアント接続の数。したがって、webサーバーは、非線形スケーリングを通じて、増加する1秒あたりの同時接続数とリクエスト数に対応できる必要があります。

Apacheは適していますか? 1990 年代初頭に誕生した

Apache は、今でもインターネット上で有力な web サーバー ソフトウェアです。 2000 年以降、増加するネットワーク サービスに合わせてスタンドアロン Web サービスを簡単に複製できないことが明らかになりました。 Apache は将来の開発のための強固な基盤を提供しますが、新しい接続ごとに Apache 自体のコピーを作成するそのアーキテクチャは、Web サイトの非線形拡張の要件を満たすことができません。最終的に、Apache はさまざまなサードパーティ製プラグインを備えた完全に機能する Web サーバーとなり、あらゆる種類の二次開発 Web サイトにほぼ普遍的に適用できるようになりました。しかし、それほど重くなるのは良いことではありません。欠点は、非常に多くの機能とツールを 1 つのソフトウェアに組み合わせると、各接続のコストも増加することです。 したがって、CPU とメモリの使用量により、ソフトウェアのスケーラビリティが低下します。

そのため、サーバー ハードウェア、オペレーティング システム、およびネットワーク リソースが Web サイトの成長を制限する主な要因ではなくなったため、世界中の開発者は Web サーバーを実行するためのより効果的な方法を模索し始めています約10年前、有名なソフトウェアエンジニアであるダニエルは Kegel 氏は、「Web サーバーの同時リクエストは数万件にとどまる時代が来た」と主張し、現在インターネット クラウド サービスと呼ばれるものを予測しました。 Kegel の C10K リストには、Web サーバーの最適な状態での同時接続数の問題を解決するいくつかの試みも含まれており、最終的には nginx が最も効果的なソリューションであることが証明されました。

C10K リストの 10,000 同時接続の問題を解決するために、nginx は別のアーキテクチャ、つまり同時接続数と 1 秒あたりのリクエスト数の両方の非線形拡張により適したアーキテクチャを検討しました。 。 nginx はイベント モデルに基づいているため、新しいプロセスをそれぞれ複製したり、ページごとに個別のスレッドを作成したりする Apache のルールには従いません。その結果、負荷が増加してもメモリと CPU の使用量は制御可能な状態を維持できるため、nginx は通常のハードウェアを備えた単一サーバー上で数万の同時リクエストを処理できます。

nginx 最初のバージョンは、HTML、CSS、JavaScript スクリプトや画像など、Apache ベースのアプリケーション サーバーの Apache にデプロイされた静的コンテンツの同時実行性とタイムアウト処理を nginx 経由でオフロードするためにリリースされました。 nginx は開発中に、FastCGI、uswgi、または SCGI プロトコルを使用してサードパーティ アプリケーションと統合し、memcache のような分散オブジェクト キャッシュ システムを備えています。同時に、負荷分散メカニズムやキャッシュを備えたリバース プロキシなど、いくつかの便利な機能が追加されました。これらの追加機能により、nginx はスケーラブルな Web ベースのインフラストラクチャを構築するためのツールの効果的な組み合わせになります。

nginx を使用すると他にも利点がありますか?

通常、大規模な同時リクエストの効率的かつ高パフォーマンスな処理が nginx の主な利点であると同時に、nginx の使用には他の利点もあります。

ここ数年、ネットワーク アーキテクトは疎結合の考えを受け入れ、アプリケーションの基礎となるコンポーネントを Web サービスから分離し始めました。ただし、LAMP (Linux、Apache、MYSQL、PHP、Python、または Perl) に基づく以前の既存の Web サイトには、LEMP (E は「エンジン x」と発音します) に基づく Web サイトが含まれる可能性があり、実際の Web サーバーはますます一般的になりつつあります。インフラストラクチャのエッジにプッシュする必要があるか、同じまたはいくつかの新しいアプリケーションとデータ ツールをさまざまな方法で統合する必要があります。

nginx は上記の状況に非常に適しています。これは、nginx が、同時実行性のオフロードなど、アプリケーション層からより効率的なエッジサーバー (翻訳者注: 馴染みのない読者はエッジサーバーにクエリを実行できます) 層までいくつかの主要な機能を提供するためです。タイムアウト処理、SSL (Secure Socket Layer)、コンテンツの静的化、圧縮とキャッシュ、接続とリクエストのスロットリング、さらには HTTP ストリーミング。同時に、nginx は memcached、Redis、およびその他の NoSQL ソリューションと直接統合して、大規模な同時ユーザーの下でのパフォーマンスを向上させることもできます。

最新のオープン ツール コンポーネントとプログラミング言語の人気により、ますます多くの企業がアプリケーションの開発と展開の習慣を変え始めています。そして、nginx はこの種の変化のモデルとなり、最も重要なコンポーネントの 1 つに発展すると同時に、多くの企業が予算内で Web サービスの持続的かつ迅速な開発を達成するのにも役立ちました。

nginx のコードの最初の行は 2002 年に書かれ、2004 年までに nginx は 2-2-clause BSD ライセンスの下でリリースされました。 nginx がリリースされて以来、そのユーザー ベースは成長を続けており、アイデアの提供、バグの送信、さまざまなコメントや提案を行うことでコミュニティ全体に大いに役立っています。

nginx のコードベースはオリジナルであり、完全に C 言語で実装されています。また、Linux、FreeBSD、Solaris、Mac OS X、AIX、Windows システムなど、さまざまなアーキテクチャのオペレーティング システムにも移植されています。 nginx には独自のライブラリもあり、これらのライブラリは、zlib、PCRE、OpenSSL に加えて、必要のないライブラリや、ライセンスが競合する可能性のあるライブラリを削除できます。

Windows バージョンの nginx について少し話しましょう。 Windows で実行される nginx は、完全に機能するポートというよりも概念実証にすぎません。 Nginx には Windows でも制限があります。つまり、nginx は Windows カーネルとの互換性が高くありません。Windows の以前のバージョンの nginx の既知の問題には、同時サポートの少なさ、パフォーマンスの低下、キャッシュの失敗、帯域幅ポリシーの失敗などがあります。将来的には、Windows バージョンの nginx は主流の機能とより一貫性のあるものになる予定です。

上記はさまざまな側面を含む nginx の紹介です。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Web Speech API开发者指南:它是什么以及如何工作Web Speech API开发者指南:它是什么以及如何工作Apr 11, 2023 pm 07:22 PM

​译者 | 李睿审校 | 孙淑娟Web Speech API是一种Web技术,允许用户将语音数据合并到应用程序中。它可以通过浏览器将语音转换为文本,反之亦然。Web Speech API于2012年由W3C社区引入。而在十年之后,这个API仍在开发中,这是因为浏览器兼容性有限。该API既支持短时输入片段,例如一个口头命令,也支持长时连续的输入。广泛的听写能力使它非常适合与Applause应用程序集成,而简短的输入很适合语言翻译。语音识别对可访问性产生了巨大的影响。残疾用户可以使用语音更轻松地浏览

如何使用Docker部署Java Web应用程序如何使用Docker部署Java Web应用程序Apr 25, 2023 pm 08:28 PM

docker部署javaweb系统1.在root目录下创建一个路径test/appmkdirtest&&cdtest&&mkdirapp&&cdapp2.将apache-tomcat-7.0.29.tar.gz及jdk-7u25-linux-x64.tar.gz拷贝到app目录下3.解压两个tar.gz文件tar-zxvfapache-tomcat-7.0.29.tar.gztar-zxvfjdk-7u25-linux-x64.tar.gz4.对解

web端是什么意思web端是什么意思Apr 17, 2019 pm 04:01 PM

web端指的是电脑端的网页版。在网页设计中我们称web为网页,它表现为三种形式,分别是超文本(hypertext)、超媒体(hypermedia)和超文本传输协议(HTTP)。

web前端和后端开发有什么区别web前端和后端开发有什么区别Jan 29, 2023 am 10:27 AM

区别:1、前端指的是用户可见的界面,后端是指用户看不见的东西,考虑的是底层业务逻辑的实现,平台的稳定性与性能等。2、前端开发用到的技术包括html5、css3、js、jquery、Bootstrap、Node.js、Vue等;而后端开发用到的是java、php、Http协议等服务器技术。3、从应用范围来看,前端开发不仅被常人所知,且应用场景也要比后端广泛的太多太多。

深入探讨“高并发大流量”访问的解决思路和方案深入探讨“高并发大流量”访问的解决思路和方案May 11, 2022 pm 02:18 PM

怎么解决高并发大流量问题?下面本篇文章就来给大家分享下高并发大流量web解决思路及方案,希望对大家有所帮助!

web前端打包工具有哪些web前端打包工具有哪些Aug 23, 2022 pm 05:31 PM

web前端打包工具有:1、Webpack,是一个模块化管理工具和打包工具可以将不同模块的文件打包整合在一起,并且保证它们之间的引用正确,执行有序;2、Grunt,一个前端打包构建工具;3、Gulp,用代码方式来写打包脚本;4、Rollup,ES6模块化打包工具;5、Parcel,一款速度极快、零配置的web应用程序打包器;6、equireJS,是一个JS文件和模块加载器。

Python轻量级Web框架:Bottle库!Python轻量级Web框架:Bottle库!Apr 13, 2023 pm 02:10 PM

和它本身的轻便一样,Bottle库的使用也十分简单。相信在看到本文前,读者对python也已经有了简单的了解。那么究竟何种神秘的操作,才能用百行代码完成一个服务器的功能?让我们拭目以待。1. Bottle库安装1)使用pip安装2)下载Bottle文件https://github.com/bottlepy/bottle/blob/master/bottle.py2.“HelloWorld!”所谓万事功成先HelloWorld,从这个简单的示例中,了解Bottle的基本机制。先上代码:首先我们从b

web浏览器是什么web浏览器是什么Sep 26, 2022 pm 05:00 PM

web浏览器是指“网页浏览器”,是一种用来检索、展示以及传递Web信息资源的应用程序;简单来说就是是用来浏览网络页面的软件。web浏览器主要通过HTTP协议与网页服务器交互并获取网页,这些网页由URL指定,文件格式通常为HTML,并由MIME在HTTP协议中指明。一个网页中可以包括多个文档,每个文档都是分别从服务器获取的。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、