最近、Azure Container AppsでNginxでReverse Proxyを構築して、upstreamにHTTP通信をしようとした際に、思わぬところでハマってしまった経験があります。
原因
AWSでは特に問題がなかったので油断していたのですが、NginxのデフォルトのHTTPプロトコルバージョンが1.0だったことに気づくまで、なんと2週間もかかってしまいました。思わぬところでの落とし穴です。
解決策
結局、「proxy_http_version 1.1;」を指定して、Nginxのupstreamへの転送時にHTTPプロトコルバージョンを1.1に設定することで解決しました。これが問題だったんですね。ちなみに、この問題はDocker Desktopでは再現せず、Azure Container Appsでのみ発生していました。
補足
ちなみに、既存のオープンソースのコンテナがHTTPプロトコルバージョン1.0しか対応していない場合でも、NginxをReverse Proxyとして使い、サイドカーパターンでオープンソースのコンテナを構築すれば、NginxとlocalhostでHTTP通信が可能です。ただ、これも簡単に構築できるわけではなく、場合によっては動作しないこともあります。
最後に
HTTP/1.0での動作に関する問題は、できれば早めに解決されるといいですね。やっぱり、ハマると時間を取られてしまうので、しっかりと環境ごとの違いにも注意しておくことが大切だと改めて感じました。
コメントを残す