Phoenixの400エラー

Phoenixをnginxなどのプロキシのバックエンドとして構成した場合、Phoenixサーバーは正常動作しているにも関わらずHTTP 400エラーを返すことがあります。

これはWebサーバーのCowboyの仕様によるもので、HTTP Hostヘッダーが空の場合には400を返すとのことです。また、スペースなどの空白文字がHostにセットされていた場合は、404が返るようです。

nginx側の設定で、 proxy_set_header が適切に機能することが確認のポイントです。
mix phx.serverのログに出ない場合があるため、問題の所在が分かりにくいケースといえます。