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 ...'
まとめ
ヘッダの追加・削除、上書き(削除追加)でそれぞれちょっと工夫が必要