我有一个相当长的 Content-Security-Policy 标头值,我必须将其放在几个location
块中。
是否可以在配置中声明一个具有我的长 CSP 字符串值的变量,然后在我的块中使用该变量代替字符串location
?
像这样:
location / {
...
set_header Content-Security-Policy $csp_string;
...
}
...
location /somethingelse {
...
set_header Content-Security-Policy $csp_string;
...
}
答案1
尝试使用变量来实现这一点可能不是一个好主意,除非您实际上希望它在不同位置有所不同。
对于必须重复的事情,最好的解决方案是include
。例如,我的 nginx 配置中有这样的内容:
include includes/csp_strict;
其中/etc/nginx/includes/csp_strict
仅包含:
add_header Content-Security-Policy "default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; frame-ancestors 'self'; base-uri 'self'; form-action 'self'";
另一个includes/csp_wordpress
看起来像:
add_header Content-Security-Policy "default-src 'self' 'unsafe-inline'; frame-ancestors 'self'; base-uri 'self';";
然后我可以在任何需要的地方包含其中任何一个(或者许多可能的其他内容)。