ホームページ  >  記事  >  バックエンド開発  >  PHP-FPM、Nginx、FastCGI の関係についての簡単な説明

PHP-FPM、Nginx、FastCGI の関係についての簡単な説明

青灯夜游
青灯夜游転載
2021-06-09 18:35:143010ブラウズ

この記事では、PHP-FPM、Nginx、FastCGI の関係、および Nginx リバース プロキシの構成と負荷分散について説明します。一定の参考値があるので、困っている友達が参考になれば幸いです。

PHP-FPM、Nginx、FastCGI の関係についての簡単な説明

PHP-FPM、Nginx、FastCGI の関係

FastCGI はプロトコルです。アプリケーションとWEBサーバーをつなぐ架け橋。 Nginx は PHP-FPM と直接通信できませんが、FastCGI を通じて処理するためにリクエストを PHP-FPM に渡します。

location ~ \.php$ {
    try_files $uri /index.php =404;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_buffers 16 16k;
    fastcgi_buffer_size 32k;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

ここで、fastcgi_pass はすべての php リクエストを処理のために php-fpm に転送します。 netstat コマンドを使用すると、ポート 127.0.0.1:9000 で実行されているプロセスが php-fpm であることがわかります。

PHP-FPM、Nginx、FastCGI の関係についての簡単な説明

Nginx reverse proxy

Nginx リバース プロキシの最も重要な命令は、次のような proxy_pass です。

location ^~ /seckill_query/ {
    proxy_pass http://ris.filemail.gdrive:8090/;
    proxy_set_header Host ris.filemail.gdrive;
}

location ^~ /push_message/ {
    proxy_pass http://channel.filemail.gdrive:8090/;
    proxy_set_header Host channel.filemail.gdrive;
}

location ^~ /data/ {
    proxy_pass http://ds.filemail.gdrive:8087/;
    proxy_set_header Host ds.filemail.gdrive;
}

ロケーションを介して URL パスを照合し、処理のために別のサーバーに転送します。

リバース プロキシは、アップストリームの負荷分散を通じて実装することもできます。

Nginx 負荷分散

アップストリーム モジュールの紹介:

負荷分散モジュールはデータのダウンロードに使用されますfrom "upstream" ディレクティブで定義されたバックエンド ホストのリストからホストを選択します。 nginx は、まず負荷分散モジュールを使用してホストを見つけ、次にアップストリーム モジュールを使用してホストと対話します。

負荷分散構成:

upstream php-upstream {
    ip_hash;

    server 192.168.0.1;
    server 192.168.0.2;
}

location / {
    root   html;
    index  index.html index.htm;
    proxy_pass http://php-upstream;
}

この例では、php-upstream の負荷分散構成を定義し、proxy_pass リバース プロキシ ディレクティブを通じてこの構成を適用します。ここで使用される ip_hash アルゴリズムには多くの負荷分散アルゴリズムがあるため、すべてを 1 つずつリストすることはしません。

負荷分散は、fastcgi_pass でも使用できます。

例:

fastcgi_pass http://php-upstream

質問

リバース プロキシと負荷の関係は何ですか?バランシング

リバース プロキシとロード バランシングという 2 つの単語は一緒に表示されることがよくありますが、実際には異なる概念です。ロード バランシングでは、異なるマシンへの分散を要求するアルゴリズムまたは戦略に重点が置かれており、実際には次のように動作します。リバースプロキシ。

proxy_pass と fastcgi_pass の違い

1 つはリバース プロキシ モジュールで、もう 1 つは処理のために fatcgi バックエンドに転送されます。

PHP-FPM、Nginx、FastCGI の関係についての簡単な説明

推奨学習: 「

PHP ビデオ チュートリアル

以上がPHP-FPM、Nginx、FastCGI の関係についての簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。