PHPFPMを構成するときのApacheSetHandlerディレクティブの構文

Nov 29 2020

いくつかのチュートリアルに従い、PHPFPMを使用するようにApacheを構成しました。しかし、私はSetHandlerラインのどの部分が実行されているのか理解しておらず、私の実験のいくつかに基づくと冗長であるように見えます。私は次の行を持っています:

SetHandler "proxy:unix:/run/php/php7.3-fpm.sock|fcgi://localhost"

これ|fcgi://localhostは、が存在するかどうかに関係なく機能します。

Plesk構成など、さまざまな場所で、一部がにfcgi://localhost置き換えられているのを見てきましたfcgi://127.0.0.1:9000

の目的は何|fcgi://localhostですか?冗長ですか?削除できますか?

sockとfcgiを分離しているパイプは、sock|fcgi「または」として解釈されますか?つまり、unixソケットが存在しない場合は、代わりにtcp接続を使用しますか?

FPMプールの構成で、listenディレクティブをホストとポートに置き換えようとしましたが、ポートだけに置き換えましたが、機能しないようです。UNIXソケットではなくTCP経由で利用できるようにPHPFPMをどのように構成しますか?現時点では、これをやりたいと思う理由はありません。学習のためだけです。

最終的に。これは、この質問をするための正しい「スタック」サイトですか?


編集して、Apacheからのドキュメントを少し見つけたと言います。例のセクションの最後の例では|fcgi://something、リバースプロキシ要求を強制するコンテキストでの使用について説明していますが、私はこれを本当に理解していません。

回答

4 Tommiie Dec 01 2020 at 15:10

ドキュメントには、必須ではないのに、なぜそれを含める必要があるのか​​が明確に記載されています。

パフォーマンス上の理由から、同じfcgi://バックエンドを表すワーカーを定義する必要があります。この形式の利点は、URIからファイル名への法線マッピングがサーバーで行われることを可能にし、ローカルファイルシステムの結果がバックエンドに渡されることです。FastCGIがこのように構成されている場合、サーバーは最も正確なPATH_INFOを計算できます。