環境:Nginx、Node.js、デジタルオーシャンドロップレット
ドキュメントヘッダーを追加http
ディレクティブは、、server
またはコンテキストで使用できることを示しますlocation
。
しかし、私がコンテンツセキュリティポリシーhttp
またはコンテキストのいずれかでserver
テストすると検出されませんhttps://csp-evaluator.withgoogle.com/またはhttps://securityheaders.com/
ブロックに追加すると、両方location
のサイトがそれを検出します。
ヘッダーの例:
add_header content-security-policy "default-src 'self';"
私のにはnginx.conf
5 つのブロックがありlocation
、そのうち 1 つはプロキシとして使用されています。content-security-policy
すべてのブロックに追加する必要がありますか、それとももっと良い方法がありますか?
location ~* \.(jpg|png|svg|webp|ico)$ { }
location ~* \.(css)$ { }
location ~* \.(htm|html)$ { }
location ~* \.(js)$ { }
location / {
proxy_pass http://127.0.0.1:9999;
}
また、他のすべての主要なセキュリティ ヘッダーを各ブロックに追加する必要がありますか? 冗長に思えますが、それがサイトを保護する唯一の方法である場合はそうします。
答え1
このadd_header
指令には興味深い性質がある。ドキュメンテーション:
ディレクティブは複数存在する可能性があります。これらのディレクティブは、現在のレベルでディレクティブが定義されて
add_header
いない場合にのみ、前の構成レベルから継承されます。add_header
つまり、追加する場合は他のこれらのブロックのいずれかにヘッダーがある場合はlocation
、またはブロックadd_header
からのディレクティブを繰り返す必要があります。server
http
include
繰り返し実行する必要がある可能性のあるこのようなディレクティブを整理するには、d ファイルの使用を検討してください。