#node.js #nginx
Вопрос:
У меня есть файл integrations.conf, который выглядит следующим образом:
http {
map $http_host $csp_header {
default "'self'";
"~*.*.something.com" "https://*.something.ai https://*.something.com";
"~*.*.something.ai" "https://*.something.ai https://*.something.com";
}
include common/base.conf;
include common/secure_headers.conf;
server {
location ~ /api {
include some_other_file.conf
}
}
...
}
Файл secure_headers.conf выглядит следующим образом:
add_header X-Frame-Options "sameorigin";
add_header Content-Security-Policy "frame-ancestors $csp_header";
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
Теперь для определенного пути «/api/this-path» я хочу заменить значения для x-frame-options
и context-security-policy
заголовки на:
X-Frame-Options "*";
Content-Security-Policy "frame-ancestors *";
Как я могу этого достичь?
Комментарии:
1. Как работает Nginx
/api/this-path
? Вы могли бы поместить его в свой собственныйlocation
блок. В качестве альтернативы вы можете использовать одну или несколькоmap
директив для создания значений заголовка (расширяя то, что у вас уже есть).2. @RichardSmith, в моем файле уже есть блок расположения, который использует «/api». Добавление другого блока расположения «/api/этот путь» отдельно или в виде вложенного блока внутри «/api» не помогло
Ответ №1:
Что делать, если вы попробуете дополнительные map
блоки?
map $uri $csp_value {
~^/api/this-path "frame-ancestors *";
default "frame-ancestors $csp_header";
}
map $uri $xfo_value
~^/api/this-path "*";
defalut "sameorigin";
}
...
server {
...
add_header X-Frame-Options $xfo_value;
add_header Content-Security-Policy $csp_value;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
...