El encabezado personalizado de Nginx devuelve el módulo de información ngx_headers_more

1. Introducción ngx_headers_more

ngx_headers_more se utiliza para agregar, configurar y borrar la información del encabezado de entrada y salida. Este módulo no está incluido en el código fuente de nginx y debe agregarse por separado.

Este módulo es una versión mejorada del módulo ngx_http_headers_module y proporciona más herramientas de utilidad, como restablecer o borrar la información de encabezado incorporada, como Content-Type, Content-Length y Server.

Puede usar la opción -s para especificar el código de estado HTTP, la opción -t para especificar el tipo de contenido y los comandos more_set_headers y more_clear_headers para modificar la información del encabezado de salida. Como:

more_set_headers -s 404 -t 'texto / html' 'X-Foo: Bar';

La información del encabezado de entrada también se puede modificar de esta manera, como:

location /foo {
    more_set_input_headers 'Host: foo' 'User-Agent: faked';
    # now $host, $http_host, $user_agent, and 
    #   $http_user_agent all have their new values.
}

La opción -t también se puede utilizar en las instrucciones more_set_input_headers y more_clear_input_headers.

A diferencia de los módulos de encabezado estándar, las instrucciones del módulo se aplican a todos los códigos de estado, incluidos 4xx y 5xx. add_header solo se aplica a 200, 201, 204, 206, 301, 302, 303, 304 o 307.

Módulo de encabezado estándar ngx_http_headers_module ver: " módulo ngx_http_headers_module add_header y expira las instrucciones "

Dos, instale ngx_headers_more

wget 'http://nginx.org/download/nginx-1.5.8.tar.gz'
tar -xzvf nginx-1.5.8.tar.gz
cd nginx-1.5.8/

# Here we assume you would install you nginx under /opt/nginx/.
./configure --prefix=/opt/nginx \
    --add-module=/path/to/headers-more-nginx-module

make
make install

Dirección de descarga del paquete ngx_headers_more: http://github.com/agentzh/headers-more-nginx-module/tags

ngx_openresty contiene este módulo.

3. Instrucciones

more_set_headers

语法: more_set_headers [-t <lista de tipos de contenido>] ... [-s <lista de códigos de estado>] ... <nuevo-encabezado> ...

Valor predeterminado: no

Sección de configuración: http, servidor, ubicación, ubicación si

Fase: filtro de encabezado de salida

Al reemplazar (si corresponde) o agregar (si no todos) los encabezados de salida especificados, el código de estado de la respuesta coincide con la opción -s y el tipo de contenido de la respuesta coincide con el tipo especificado por la opción -t.

Si no se especifica -s o -t, o hay un valor de tabla vacío, no se requiere ninguna coincidencia. Por lo tanto, para la siguiente especificación, se establece cualquier código de estado y cualquier tipo de contenido.

more_set_headers "Servidor: mi_servidor";

Los encabezados de respuesta con el mismo nombre siempre se sobrescriben. Si desea agregar un encabezado, puede usar la instrucción add_header estándar en su lugar.

Un solo comando puede configurar / agregar múltiples cabezales de salida. Como:

more_set_headers 'Foo: bar' 'Baz: bah';

En un solo comando, las opciones pueden aparecer varias veces, como:

more_set_headers -s 404 -s '500 503' 'Foo: bar';

Equivalente a:

more_set_headers -s '404 500 503' 'Foo: bar';

El nuevo jefe tiene una de las siguientes formas:

  1. Name: Value
  2. Name:
  3. Name

最后两个有效清除的头名称的值。Nginx的变量允许是头值,如:

set $my_var "dog";

more_set_headers "Server: $my_var";

Nota: more_set_headers está permitido en el bloque de ubicación if, pero no está permitido en el bloque if del servidor. La siguiente configuración informará un error de sintaxis:

# This is NOT allowed!
server {
    if ($args ~ 'download') {
        more_set_headers 'Foo: Bar';
    }
    ...
}

more_clear_headers

语法 :more_clear_headers [-t <lista de tipos de contenido>] ... [-s <lista de códigos de estado>] ... <nuevo-encabezado> ...

Valor predeterminado: no

Sección de configuración: http, servidor, ubicación, ubicación si

Fase: filtro de encabezado de salida

Borre el encabezado de salida especificado:

more_clear_headers -s 404 -t 'texto / plano' Foo Baz;

Equivalente a

more_set_headers -s 404 -t 'texto / plano' "Foo:" "Baz:";

o

more_set_headers -s 404 -t 'texto / plano' Foo Baz

También puede utilizar comodines *, como:

more_clear_headers 'X-Hidden- *';

Borre los encabezados de salida que comiencen por "X-Hidden-".

more_set_input_headers

语法 :more_set_input_headers [-r] [-t <lista de tipos de contenido>] ... <nuevo-encabezado> ...

Valor predeterminado: no

Sección de configuración: http, servidor, ubicación, ubicación si

Fase:  reescribir la cola

Muy similar a more_set_headers, la diferencia es que funciona en el encabezado de entrada (o encabezado de solicitud), y solo admite la opción -t.

Nota: Utilice la opción -t para filtrar el tipo de contenido del encabezado de la solicitud, no el encabezado de la respuesta.

more_clear_input_headers

语法 :more_clear_input_headers [-t <lista de tipos de contenido>] ... <nuevo-encabezado> ...

Valor predeterminado: no

Sección de configuración: http, servidor, ubicación, ubicación si

Fase:  reescribir la cola

Borre el encabezado de entrada especificado, como:

more_clear_input_headers -s 404 -t 'text/plain' Foo Baz;
等同于
more_set_input_headers -s 404 -t 'text/plain' "Foo: " "Baz: ";
或
more_set_input_headers -s 404 -t 'text/plain' Foo Baz

Cuarto, ngx_headers_more limitaciones

1. A diferencia del módulo de encabezado estándar, este módulo no será efectivo para los siguientes encabezados: Expires, Cache-Control y Last-Modified.

2. El encabezado de respuesta de Connection no se puede eliminar usando este módulo. La única forma es cambiar el archivo src / http / ngx_http_header_filter_module.c.

Cinco, use ngx_headers_more

# set the Server output header
more_set_headers 'Server: my-server';

# set and clear output headers
location /bar {
    more_set_headers 'X-MyHeader: blah' 'X-MyHeader2: foo';
    more_set_headers -t 'text/plain text/css' 'Content-Type: text/foo';
    more_set_headers -s '400 404 500 503' -s 413 'Foo: Bar';
    more_clear_headers 'Content-Type';

    # your proxy_pass/memcached_pass/or any other config goes here ...
}

# set output headers
location /type {
    more_set_headers 'Content-Type: text/plain';
    # ...
}

# set input headers
location /foo {
    set $my_host 'my dog';
    more_set_input_headers 'Host: $my_host';
    more_set_input_headers -t 'text/plain' 'X-Foo: bah';

    # now $host and $http_host have their new values ...
    # ...
}

# replace input header X-Foo *only* if it is already exists
more_set_input_headers -r 'X-Foo: howdy';

Seis, aplique ngx_headers_more

Modifique el software y la versión del servidor web y oculte la información del encabezado Content-Type, Accept-Range y Content-Length.

add_header

more_set_headers "Server: ttlsa.com Web Server";
more_clear_headers "Content-Type:";
more_clear_headers "Accept-Ranges: ";
more_clear_headers "Content-Length: ";

add_header

Código de estado 404 agregar encabezado

La configuración es la siguiente:

more_set_headers "Server: ttlsa.com Web Server";
more_set_headers -s 404 "Error: Not found";
more_clear_headers "Content-Type:";
more_clear_headers "Accept-Ranges: ";
more_clear_headers "Content-Length: ";

add_header

Supongo que te gusta

Origin blog.csdn.net/zhangge3663/article/details/108072983
Recomendado
Clasificación