こんにちは、さとさんです。
我が家では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
コメント