При использовании Nginx мне необходимо добавлять политику безопасности контента к каждому блоку местоположения?

При использовании Nginx мне необходимо добавлять политику безопасности контента к каждому блоку местоположения?

Среда: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.conf5 locationблоков, один из которых используется как прокси. Нужно ли добавлять 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необходимо будет повторить.

Рассмотрите возможность использования included-файлов для организации подобных директив, которые вам, возможно, придется повторять.

Связанный контент