使用 Nginx 变量代替 CSP 值

使用 Nginx 变量代替 CSP 值

我有一个相当长的 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';";

然后我可以在任何需要的地方包含其中任何一个(或者许多可能的其他内容)。

相关内容