Synology NASのリバースプロキシでupstream sent too big header~」が出た場合の対処法

IT
IT

こんにちは、さとさんです。

我が家ではSynologyのNAS「DS918 Plus」を愛用しています。

今回、新しくWebサーバーをNAS上の仮想マシンとして作成し、外部からリバースプロキシでアクセス相としたところ、以下のようなエラーがDSMのnginxのログに出力されていました。

2021/03/29 14:13:57 [error] 2669#2669: *141506 upstream sent too big header while reading response header from upstream, client: x.x.x.x, server: hogehoge.com, request: "GET /favicon.ico HTTP/1.1", upstream: "http://VMのIP/favicon.ico", host: "hogehoge.com", referrer: "http://hogehoge.com/"

エラーメッセージの意味は、レスポンスヘッダーのサイズが大きすぎることを表しています。

どうも新しく立てたWebサーバーが巨大なレスポンスヘッダーを生成している様子。。

検証目的なので、まずはとにかくページを表示させるため、バッファサイズを大きくして回避します。

nginxの設定ファイルで該当するパラメーターは以下。

  • proxy_buffers
  • proxy_buffer_size
  • proxy_busy_buffers_size

DSMにsshログインして該当の設定ファイルを探したところ、以下にありました。

/usr/syno/share/nginx/nginx.mustache

DSMでは、mustacheというテンプレートを使って、サービス起動時などにmustacheからconfファイルを生成しています。

なので、動作中のnginxのnginx.confを編集しても、サービスを再起動すると元に戻ってしまうので注意が必要です。

nginx.mustacheの中で、今回編集するのは以下。

.
.
proxy_buffering     off;
fastcgi_buffering   off;
scgi_buffering      off;
.
.

バッファがoffになっているので、これらをコメントアウトします。
さらに、先ほどの3つのバッファサイズを指定。

proxy_buffer_size       128k;
proxy_buffers       4   256k;
proxy_busy_buffers_size 256k;

編集後、nginxを再起動します。

synoservicecfg --restart nginx

再度Webサーバーにアクセスすると、無事ページが表示されました。

参考

Nginxで502 Bad Gatewayの原因が「upstream sent too big header~」の場合の対処法
管理しているWebサイトで502 Bad Gatewayが発生していました。 Nginxのエラーログを見ると以下のようなログが流れていました。 2019/04/18 20:00:33

コメント

タイトルとURLをコピーしました