nginx — замена заголовка

#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";
    ...