Nginxは訪問者とアプリケーションの間に位置します。静的ファイルを自ら返すことも、レスポンスを生成するアプリケーションであるバックエンドへリクエストを渡すこともできます。
商品へのリクエストを追う
text
Browser -> Nginx -> Application -> Database
Browser <- Nginx <- Application <- Database
商品ページでは、Nginxがリクエストを受け取り、Webサイトとパスのルールを選択してアプリケーションへ転送します。アプリケーションは商品を読み取り、Nginx経由でレスポンスを返します。静的画像なら、代わりにNginxが直接ファイルを読めます。
誰が処理を担当するのか
- masterプロセスは設定を読み込み、workerを管理します。監督者と考えてください。
- workerプロセスは接続とリクエストを処理します。1つのworkerで多数の接続を同時に管理できます。
あるリクエストがバックエンドを待つ間、event loopによってworkerは準備のできた別の接続を処理できます。待機中の訪問者ごとにスレッドを確保するわけではありません。
これでは解決しないこと
商品クエリが長時間かかれば、Nginxもその完了を待ちます。workerを増やしても遅いデータベースが自動的に改善するわけではありません。まず、待ち時間がNginx、アプリケーション、データベースのどこで発生しているか特定します。
