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
yServer
.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 .