
これが実際に可能かどうか知りたいのですが、以前の AWS TAM の 1 人がこれを実演しているのを見たことがあるはずです。
私は、PHP アプリケーションをホストしている ECS から PHP-FPM コンテナ (ポート 9000) を提供しています。nginx ボックスを ALB だけに置き換えることを検討しています。
基本的に、ポート 80 経由で ALB に送信されるリクエストは、元のリクエスト データを使用してポート 9000 にあるアプリケーションのエントリ ポイントを実行する必要があります。
ターゲット グループをいろいろ試してみましたが、nginx が提供するのと同じ ProxyPass 機能を実行する方法がわかりません。
これは可能でしょうか? もし可能であれば、どのようにすればいいのでしょうか?
答え1
これが実際に可能かどうか知りたいのですが、以前の AWS TAM の 1 人がこれを実演しているのを見たことがあるはずです。
この解決策を楽しみにしています。
私の理解では、NGINX の背後にある PHP-FPM が最も簡単なソリューションであるという結論に達しました。理由:
- 高速CGIは、対話型プログラムと Web サーバーをインターフェイスするためのバイナリ プロトコルです。したがって、PHP-FPM によって公開されるポート 9000 は、AWS ELB の背後に直接配置するのに適していません。
- PHPの組み込みウェブサーバー実稼働環境では使用しないでください。
- 同じサーバーを Web サーバーとアプリケーション サーバーにするのはよくありません。アプリケーション サーバーのリソースは Web サーバーによって独占され、その逆も同様です。各サーバーにはそれぞれ利点があります。当社では、Web サーバーとして実績のある NGINX を使用しています。主要な PHP FastCGI 実装として PHP-FPM を使用しています。ネズミを殺すのに AK-47 を使うべきではなく、ネズミ捕りを使うべきです。
- AWS ELB の背後にある Django + Gunicorn アプリは、低速クライアントがリクエストを送信し始めるまでスムーズに動作します。NGINX は、完全なリクエスト (すべての TCP パケット) をバッファリングして Gunicorn に転送するため、低速クライアントへの対応が容易になります。参照:Gunicornの展開これは PHP-FPM にも適用されます。
- NGINX は静的ファイルを簡単に提供し、GZIP を使用して圧縮するのに役立ちます。ただし、静的ファイルは S3 などのオブジェクト ストレージを使用して提供する必要があります。