PHP FPM を設定する場合の Apache SetHandler ディレクティブの構文

PHP FPM を設定する場合の Apache SetHandler ディレクティブの構文

いくつかのチュートリアルに従って、PHP FPM を使用するように Apache を設定しました。ただし、行のどの部分が機能しているのか理解できずSetHandler、いくつかの実験に基づくと冗長であるように見えます。次の行があります:

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

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

Pleskの設定など、さまざまな場所でfcgi://localhostfcgi://127.0.0.1:9000

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

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

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

最後に。これはこの質問をするのに適した「スタック」サイトでしょうか?


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

答え1

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

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

関連情報