こんにちは、近ため管理人です。
今回はとあるサービスの運営中に発生したエラー、親の顔より見たことのある「ubuntu 502 bad gateway」の解決策についてです。
ローカル環境(Apache)では問題なく動作したのに、本番環境(Nginx)だとサーバーエラーになってしまったのですが、あっさり解決できたので、その方法を備忘録がてらメモ書きしておきます。
目次
Ubuntu 502 bad gatewayエラーとは
このエラーは一般的にウェブサーバーが他のサーバーからの適切なレスポンスを受け取れないときに発生するHTTPステータスコードです。Ubuntuや他のオペレーティングシステムでNginxなどのウェブサーバーを使用している場合、このエラーは以下のような原因で発生することがあります:
- 上流のサーバーがダウンしている、またはレスポンスを返すことができない。
- ネットワークの問題により、ウェブサーバーが上流のサーバーと通信できない。
- ウェブサーバーの設定ミス、特にプロキシサーバーやゲートウェイの設定に問題がある場合。
- サーバーが過負荷状態で、適切なレスポンスを返せない。
今回はサーバーダウンしておらず、ネットワークには問題がない過負荷状態でもない、つまりリバースプロキシをしているWebサーバーに問題がある可能性が高いと辺りをつけました。
Nginxのエラーログを追う
Nginxのエラーログは通常、こちらに出力されます。
$ sudo less /var/log/nginx/error.log
そして、以下のようなログが表示されていました。
[error] 944673#944673: *88528 upstream sent too big header while reading response header from upstream
too big headerということで、ヘッダーサイズが大きすぎるということが分かりました。
[error] upstream sent too big header while reading response header from upstreamを解決するには
原因が分かれば簡単です。Nginxの設定ファイルに大きなヘッダーでも処理できるよう設定内容を追記していきます。
$ sudo vi /etc/nginx/nginx.conf
で設定ファイルを開きます。そして、以下を追記します。
http{
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
設定ファイルの変更が完了したら、「:wq」で保存し、Nginxを再起動します。
$ sudo service nginx restart
以上です。皆さんのお力になれていれば幸いです。最後までお読みいただきありがとうございました。
コメント