环境: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
块,其中一个用作代理。我需要添加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 文件来组织您可能需要重复的指令。