remove proxy_set_header proxy_pass example nginx http-headers

proxy_set_header - ¿Cómo se cambia el encabezado del servidor devuelto por nginx?



nginx proxy_set_header (10)

¿Estás preguntando sobre el valor del encabezado del servidor en la respuesta? Puedes intentar cambiar eso con una directiva add_header, pero no estoy seguro si funcionará. http://wiki.codemongers.com/NginxHttpHeadersModule

Hay una opción para ocultar la versión, por lo que solo se mostrará nginx, pero ¿hay alguna forma de ocultar eso para que no se muestre nada o cambiar el encabezado?


Al igual que Apache, esta es una edición rápida de la fuente y recompilación. De Calomel.org :

El servidor: cadena es el encabezado que se envía de vuelta al cliente para indicarle qué tipo de servidor http está ejecutando y posiblemente qué versión. Esta cadena es utilizada por lugares como Alexia y Netcraft para recopilar estadísticas sobre cuántos y de qué tipo de servidor web se encuentran en vivo en Internet. Para respaldar al autor y las estadísticas de Nginx, recomendamos mantener esta cadena como está. Pero, por seguridad, es posible que no desee que las personas sepan qué está ejecutando y puede cambiar esto en el código fuente. Edite el archivo fuente src/http/ngx_http_header_filter_module.c en las líneas 48 y 49. Puede cambiar el String a cualquier cosa que desee.

## vi src/http/ngx_http_header_filter_module.c (lines 48 and 49) static char ngx_http_server_string[] = "Server: MyDomain.com" CRLF; static char ngx_http_server_full_string[] = "Server: MyDomain.com" CRLF;

Edición de marzo de 2011: Apoyos a Flavius ​​a continuación para señalar una nueva opción, reemplazando el HttpHeadersModule estándar de HttpHeadersModule con el HttpHeadersMoreModule bifurcado. La recompilación del módulo estándar sigue siendo la solución rápida, y tiene sentido si desea utilizar el módulo estándar y no cambiará la cadena del servidor a menudo. Pero si quieres más que eso, HttpHeadersMoreModule es un proyecto sólido y te permite hacer todo tipo de magia negra en tiempo de ejecución con tus encabezados HTTP.


Es muy simple: agregue estas líneas a la sección del servidor:

server_tokens off; more_set_headers ''Server: My Very Own Server'';


Hay un módulo especial: http://wiki.nginx.org/NginxHttpHeadersMoreModule

Este módulo le permite agregar, configurar o borrar cualquier encabezado de salida o entrada que especifique.

Esta es una versión mejorada del módulo de headers estándar porque proporciona más utilidades como restablecer o borrar "encabezados integrados" como Content-Type , Content-Length y Server .

También le permite especificar un criterio de código de estado HTTP opcional usando la opción -s y un criterio de tipo de contenido opcional usando la opción -t al modificar los encabezados de salida con las directivas more_set_headers y more_clear_headers ...


Instalar Nginx Extras

sudo apt-get update sudo apt-get install nginx-extras

Los detalles del servidor se pueden eliminar de la respuesta agregando las siguientes dos líneas en nginx.conf (en la sección http)

more_clear_headers Server; server_tokens off;


La última actualización fue hace un tiempo, así que aquí está lo que funcionó para mí en Ubuntu:

sudo apt-get update sudo apt-get install nginx-extras

A continuación, agregue las dos líneas siguientes a la sección http de nginx.conf , que generalmente se encuentra en /etc/nginx/nginx.conf:

sudo nano /etc/nginx/nginx.conf server_tokens off; # removed pound sign more_set_headers ''Server: Eff_You_Script_Kiddies!'';

Además, no olvide reiniciar nginx con sudo service nginx restart .


La única forma es modificar el archivo src / http / ngx_http_header_filter_module.c. Cambié nginx en la línea 48 a una cadena diferente.

Lo que puede hacer en el archivo de configuración de nginx es desactivar server_tokens . Esto evitará que nginx imprima el número de versión.

Para comprobar las cosas, intente curl -I http://vurbu.com/ | servidor grep

Debería regresar

Server: Hai


Si está utilizando nginx para proxy una aplicación de back-end y quiere que el back-end anuncie su propio Server: encabezado sin nginx sobreescribiéndolo, entonces puede entrar dentro de la stanza server {…} y establecer:

proxy_pass_header Server;

Eso convencerá a nginx de dejar ese encabezado solo y no reescribir el valor establecido por el back-end.


Si estás de acuerdo con solo cambiar el encabezado por otra cadena de cinco letras o menos, simplemente puedes aplicarle un parche al binario.

sed -i ''s/nginx/r/thing/r/'' `which nginx`

Lo cual, como solución, tiene algunas ventajas notables. A saber, que puede permitir que su versión de nginx sea manejada por el administrador de paquetes (por lo tanto, no se compila desde el origen) incluso si nginx-extras no está disponible para su distribución, y no necesita preocuparse por ninguno de los adicionales. código de algo así como nginx-extras siendo vulnerable.

Por supuesto, también querrá configurar la opción server_tokens off , para ocultar el número de versión, o parchear esa cadena de formato también.

Digo "cinco letras o menos" porque por supuesto siempre puedes reemplazar:

nginx / r / 0

con

bob / r / 0 / r / 0

dejando los últimos dos bytes sin cambios.

Si realmente desea más de cinco caracteres, querrá dejar Server_tokens encendidos y reemplazar la cadena de formato (un poco más larga), aunque nuevamente hay un límite superior en esa longitud impuesto por la longitud del formato de cadena - 1 (para el retorno de carro).

... Si ninguno de los anteriores tiene sentido para usted, o nunca ha parcheado un binario antes, es posible que desee mantenerse alejado de este enfoque.


Simple, edite /etc/nginx/nginx.conf y elimine el comentario de

#server_tokens off;

Busque la sección http .