add_header para cierta request_uri

add_header para cierta request_uri

La aplicación maneja todas las rutas. Entonces este bloque de configuración básica funciona:

location / {
    try_files $uri $uri/ /index.html;
}

El problema es que quiero agregar un encabezado personalizado cada vez que un visitante solicita un determinado URI. Por ejemplo, /content. Bueno, eso debe ser tan fácil como:

location ~ ^/content {
   try_files $uri $uri/ /index.html;
   add_header X-CUSTOM-HEADER value;
}

Pero eso no funciona. Nginx no está creando ese encabezado. Luego, intenté eliminar la try_filesdirectiva delcontenidobloquear, pero obviamente eso no funciona ya que no hay /contentuna carpeta "real" en el directorio raíz. Por lo tanto, nginx arrojará404 No encontradoerror.

También intenté mover ese bloque dentro del bloque de ubicación raíz. Tampoco funciona.


En Apache, esto se puede hacer fácilmente usando esto:

<If "%{THE_REQUEST} =~ pattern">
    Header set HEADER value;
</If>

Respuesta1

Puede configurar el encabezado usando una variable asignada. Si la variable se establece en una cadena vacía, el encabezado se descartará silenciosamente.

Por ejemplo:

map $request_uri $myheader {
    ~^/content   a_value;
}
server {
    ...
    add_header X-CUSTOM-HEADER $myheader;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

información relacionada