それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

nginx で proxy 時に header を除去する-CSP上書き削除書き換え

nginx で http header を上書き除去する。

nginx でアプリケーションへ reverse proxy してたんだけど、アプリケーション側にcontent-security-policy の設定が最新版のChromeと合わなかった。とくに blog/data

add_header で csp を追記しようとしたけど、セキュリティは全部OKから絞っていくほうが設定が楽。

なので、一旦全部許可しようと思ったんだけど、あれ除去ってどうやるんだよ。と気づいて調べたのでメモ

これでは、上書きにならない。あくまでついか

add_header  content-security-policy '';

nginx で http header を消すー削除

そこで、アプリケーションからのレスポンス中のヘッダを除去して応答を再生成することにした。

proxy_hide_header  "content-security-policy";

これで、ブラウザに返すレスポンスから特定のヘッダを削除して見えなくすることができる。

ちなみに、proxy_set_header で空文字を与えても同じようなことはできるけど

proxy_set_header cache-control ''

こちらは空文字を送信するので完全に消えるわけじゃない。

ちなみに、proxy_ignore_headersと似たような名前の設定が他にもあるが、これは proxy - proxy 間で使われるヘッダ( X-REAL-IP のような ) を除去するものらしい。

いったん削除して追加する。(上書き)

上書きならセットをつかう。追加なら

proxy_set_header cache-control 'default ...'
add_header cache-control 'image ...'

まとめ

ヘッダの追加・削除、上書き(削除追加)でそれぞれちょっと工夫が必要

関連資料

Module ngx_http_proxy_module