Phoenixの400エラー

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

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

nginx側の設定で、 proxy_set_header が適切に機能することが確認のポイントです。

mix phx.serverのログに出ない場合があるため、問題の所在が分かりにくいケースといえます。

中馬崇尋
Chuma Takahiro