Hay una opción para ocultar la versión para que solo muestre nginx, pero ¿hay alguna forma de ocultarla también para que no muestre nada o cambie el encabezado?
Hay una opción para ocultar la versión para que solo muestre nginx, pero ¿hay alguna forma de ocultarla también para que no muestre nada o cambie el encabezado?
Respuestas:
Al igual que Apache, esta es una edición rápida de la fuente y se vuelve a compilar. De Calomel.org :
El servidor: cadena es el encabezado que se envía de vuelta al cliente para decirles qué tipo de servidor http está ejecutando y posiblemente qué versión. Lugares como Alexia y Netcraft utilizan esta cadena para recopilar estadísticas sobre cuántos y de qué tipo de servidor web viven en Internet. Para admitir el 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 lo que está ejecutando y puede cambiar esto en el código fuente. Edite el archivo fuente
src/http/ngx_http_header_filter_module.c
mirando las líneas 48 y 49. Puede cambiar la cadena a lo 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: A continuación, apoyamos a Flavius para señalar una nueva opción, reemplazando el HttpHeadersModule estándar de Nginx con el HttpHeadersMoreModule bifurcado . Volver a compilar el módulo estándar sigue siendo la solución rápida, y tiene sentido si desea usar el módulo estándar y no cambiará la cadena del servidor con frecuencia. Pero si desea más que eso, HttpHeadersMoreModule es un proyecto sólido y le permite hacer todo tipo de magia negra en tiempo de ejecución con sus encabezados HTTP.
r->headers_out.server
.
Si está utilizando nginx para proxy una aplicación de fondo y desea que el back-end anuncie su propio Server:
encabezado sin que nginx lo sobrescriba, entonces puede ir dentro de su server {…}
stanza y configurar:
proxy_pass_header Server;
Eso convencerá a nginx de dejar ese encabezado solo y no reescribir el valor establecido por el back-end.
La última actualización fue hace un tiempo, así que esto es lo que funcionó para mí en Ubuntu:
sudo apt-get update
sudo apt-get install nginx-extras
Luego agregue las siguientes dos líneas a la http
sección 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
.
more_set_headers 'Server: ';
Simple, edite /etc/nginx/nginx.conf y elimine el comentario de
#server_tokens off;
Busca la sección 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';
nginx-extra
para obtener ese módulo.
Hay un módulo especial: http://wiki.nginx.org/NginxHttpHeadersMoreModule
Este módulo le permite agregar, establecer o borrar cualquier salida o encabezado de entrada que especifique.
Esta es una versión mejorada de la norma cabeceras módulo, ya que proporciona más utilidades como restablecer o compensación "incorporado cabeceras" como
Content-Type
,Content-Length
, yServer
.También le permite especificar un criterio de código de estado HTTP opcional usando la
-s
opción y un criterio de tipo de contenido opcional usando la-t
opción mientras modifica los encabezados de salida con las directivas more_set_headers y more_clear_headers ...
--add-module=/path-to-headers-more-nginx-module
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 el nginx.conf (en la sección http)
more_clear_headers Server;
server_tokens off;
yum install nginx-extras
no funciona, supongo que esto funciona en Debia / Ubuntu, etc. con el apt-get
.)
Si está de acuerdo con cambiar el encabezado a otra cadena de cinco letras o menos, simplemente puede parchear el binario.
sed -i 's/nginx\r/thing\r/' `which nginx`
Lo cual, como solución, tiene algunas ventajas notables. Es decir, que puede permitir que el administrador de paquetes maneje sus versiones de nginx (por lo tanto, sin compilar desde la fuente) incluso si nginx-extras no está disponible para su distribución, y no necesita preocuparse por ninguno de los El código de algo como nginx-extras es vulnerable.
Por supuesto, también querrá establecer 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 dos últimos bytes sin cambios.
Si realmente desea más de cinco caracteres, querrá dejar server_tokens 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 de la cadena de formato - 1 (para el retorno de carro).
... Si nada de lo anterior tiene sentido para usted, o si nunca ha parcheado un binario antes, es posible que desee mantenerse alejado de este enfoque.
sed
comando anterior, la `which nginx`
parte devuelve la ruta al binario y el sed
comando reemplaza el byte.
nginx
para que los cambios surtan efecto. Todo eso dicho? Te insto a que no uses una de las otras respuestas. Si todas las cosas que digo ya no te son familiares y no sabes para qué /etc
sirve el directorio, un truco como este es un poco peligroso.
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 nginx es desactivar server_tokens . Esto evitará que nginx imprima el número de versión.
Para ver las cosas, intente curl -I http://vurbu.com/ | servidor grep
Debería volver
Server: Hai
Después de leer la respuesta de Parthian Shot, busco en el /usr/sbin/nginx
archivo binario. Luego descubrí que el archivo contiene estas tres líneas.
Server: nginx/1.12.2
Server: nginx/1.12.2
Server: nginx
Básicamente, los dos primeros están destinados a la server_tokens on;
directiva (versión del servidor incluida). Luego cambio los criterios de búsqueda para que coincidan con esas líneas dentro del archivo binario.
sed -i 's/Server: nginx/Server: thing/' `which nginx`
Después de profundizar más, descubrí que el mensaje de error producido por nginx también se incluye en este archivo.
<hr><center>nginx</center>
Hay tres de ellos, uno sin la versión, dos de ellos incluyen la versión. Entonces ejecuto el siguiente comando para reemplazar la cadena nginx dentro del mensaje de error.
sed -i 's/center>nginx/center>thing/' `which nginx`
/usr/sbin
carpeta produce esto:sed: can't read is: No such file or directory
Según la documentación de nginx , admite valores personalizados o incluso la exclusión:
Syntax: server_tokens on | off | build | string;
pero lamentablemente solo con una suscripción comercial :
Además, como parte de nuestra suscripción comercial, a partir de la versión 1.9.13, la firma en las páginas de error y el valor del campo del encabezado de respuesta "Servidor" se pueden establecer explícitamente utilizando la cadena con variables. Una cadena vacía deshabilita la emisión del campo "Servidor".
Sé que la publicación es un poco antigua, pero he encontrado una solución fácil que funciona en la distribución basada en Debian sin compilar nginx desde la fuente.
Primero instale el paquete nginx-extras
sudo apt install nginx-extras
Luego cargue el módulo más de encabezados http nginx editando nginx.conf y agregando la siguiente línea dentro del bloque del servidor
load_module modules / ngx_http_headers_more_filter_module.so;
Una vez hecho esto, tendrá acceso a las directivas more_set_headers y more_clear_headers.
El paquete Nginx-extra está en desuso ahora.
Por lo tanto, lo siguiente ahora funcionó para mí cuando intenté instalar varios paquetes more_set_headers 'Servidor: Mi propio servidor';
Simplemente puede hacer lo siguiente y no se devolverá ninguna información de servidor o versión
server_tokens '';
si solo quieres eliminar el número de versión, esto funciona
server_tokens off;
¿Pregunta sobre el valor del encabezado del servidor en la respuesta? Puede intentar cambiar eso con una directiva add_header, pero no estoy seguro de si funcionará. http://wiki.codemongers.com/NginxHttpHeadersModule