nginxプロキシでアップストリームのヘッダを消す

この記事は【2020年12月6日】と作成から2年以上経っているため、記事の内容が古い可能性があります。最新の情報を合わせてご確認されることを推奨いたします。

nginxプロキシでアップストリームサーバが返す一部のレスポンスヘッダを消したい。

アップストリーム側で出力しているヘッダがあり、nginxプロキシ側でも同様にadd_headerでヘッダを出力している場合にヘッダが重複してしまう。例えばmattermostのdocker版では、一部のページでX-Frame-Optionsが重複して出力されてしまう?ようだが、どのページかは言及されていない。ただパッと見た限りではloginページくらいか?ブラウザはエラーにはならないが、できれば取り除きたい。

https://github.com/mattermost/mattermost-docker/issues/468

ソースを調査するかぎりでは、ソース内に直書きされているので管理画面で削除するといったことはできなさそうだった。

https://github.com/mattermost/mattermost-server/blob/3099128bbd4faa1cdcf716182e2cc43c294badfd/web/handlers.go#L171

mattermostのdocker版は、nginxコンテナでsecurity.confというファイルが読み込まれるようになっている。その中で以下の3つのヘッダがレスポンスヘッダに追加される。X-Frame-Options SAMEORIGIN;が追加されていることが分かる。

proxy_hide_header

このディレクティブは、ngx_http_proxy_moduleというモジュールで使えるものだが、デフォルトで組み込まれているモジュールのため使用できる。以下のように指定する。

以下をconfに設定して反映してみよう。

nginxコンテナのconfをコピーしてきて、

以下のように編集する。オリジナルのconfとの差は以下のとおり。

編集したconfを反映する。

ページにアクセスしてみると重複は解消されている。

他のアプローチとして、headers-more-nginx-moduleというモジュールがあるが、これは別途組み込みが必要なようだ。

https://www.nginx.com/resources/wiki/modules/headers_more/

参考リンク

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください