使用 Nginx 我是否必须向每个位置块添加内容安全策略?

使用 Nginx 我是否必须向每个位置块添加内容安全策略?

环境:Nginx、Node.js、数字海洋水滴

文档添加标题指令表明它可以在httpserverlocation上下文中使用。

但是当我添加我的内容安全政策http或上下文,server当我测试它时没有检测到https://csp-evaluator.withgoogle.com/或者https://securityheaders.com/
当我将其添加到一个location块时,两个站点都会检测到它。

示例标题:

add_header content-security-policy "default-src 'self';"

nginx.conf有 5 个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指令。serverhttp

考虑使用included 文件来组织您可能需要重复的指令。

相关内容