ALB を使用して PHP-FPM ECS コンテナをターゲットにする

ALB を使用して PHP-FPM ECS コンテナをターゲットにする

これが実際に可能かどうか知りたいのですが、以前の AWS TAM の 1 人がこれを実演しているのを見たことがあるはずです。

私は、PHP アプリケーションをホストしている ECS から PHP-FPM コンテナ (ポート 9000) を提供しています。nginx ボックスを ALB だけに置き換えることを検討しています。

基本的に、ポート 80 経由で ALB に送信されるリクエストは、元のリクエスト データを使用してポート 9000 にあるアプリケーションのエントリ ポイントを実行する必要があります。

ターゲット グループをいろいろ試してみましたが、nginx が提供するのと同じ ProxyPass 機能を実行する方法がわかりません。

これは可能でしょうか? もし可能であれば、どのようにすればいいのでしょうか?

答え1

これが実際に可能かどうか知りたいのですが、以前の AWS TAM の 1 人がこれを実演しているのを見たことがあるはずです。

この解決策を楽しみにしています。

私の理解では、NGINX の背後にある PHP-FPM が最も簡単なソリューションであるという結論に達しました。理由:

  1. 高速CGIは、対話型プログラムと Web サーバーをインターフェイスするためのバイナリ プロトコルです。したがって、PHP-FPM によって公開されるポート 9000 は、AWS ELB の背後に直接配置するのに適していません。
  2. PHPの組み込みウェブサーバー実稼働環境では使用しないでください。
  3. 同じサーバーを Web サーバーとアプリケーション サーバーにするのはよくありません。アプリケーション サーバーのリソースは Web サーバーによって独占され、その逆も同様です。各サーバーにはそれぞれ利点があります。当社では、Web サーバーとして実績のある NGINX を使用しています。主要な PHP FastCGI 実装として PHP-FPM を使用しています。ネズミを殺すのに AK-47 を使うべきではなく、ネズミ捕りを使うべきです。
  4. AWS ELB の背後にある Django + Gunicorn アプリは、低速クライアントがリクエストを送信し始めるまでスムーズに動作します。NGINX は、完全なリクエスト (すべての TCP パケット) をバッファリングして Gunicorn に転送するため、低速クライアントへの対応が容易になります。参照:Gunicornの展開これは PHP-FPM にも適用されます。
  5. NGINX は静的ファイルを簡単に提供し、GZIP を使用して圧縮するのに役立ちます。ただし、静的ファイルは S3 などのオブジェクト ストレージを使用して提供する必要があります。

関連情報