systemadmin.es > LAMP y web > Eliminar completamente server header en nginx

Eliminar completamente server header en nginx

Mediante la directiva server_tokens de nginx podemos esconder la versión del servidor web. Pero, al igual que con apache, deberemos modificar el código para cambiar el nombre del servidor web que aparece en el Server header. Vamos a ver como eliminar totalmente el header:

En el caso de nginx, se añade el header en el fichero src/http/ngx_http_header_filter_module.c. Deberemos buscar la siguiente función:

static ngx_int_t
ngx_http_header_filter(ngx_http_request_t *r)
{

Y comentar la copia del buffer mediante la función ngx_cpymem():

    if (r->headers_out.server == NULL) {
        if (clcf->server_tokens) {
            p = (u_char *) ngx_http_server_full_string;
            len = sizeof(ngx_http_server_full_string) - 1;

        } else {
            p = (u_char *) ngx_http_server_string;
            len = sizeof(ngx_http_server_string) - 1;
        }

        //b->last = ngx_cpymem(b->last, p, len);
    }

Lo podemos hacer directamente mediante el siguiente parche:

# cd nginx-1.4.1
# wget systemadmin.es/wp-content/uploads/2013/05/nginx-noserverheader.patch
# patch -p1 < nginx-noserverheader.patch

Una vez aplicado, compilado e instalado, el nginx ya no añadirá el header Server en la respuesta HTTP:

# curl -I localhost
HTTP/1.1 403 Forbidden
Date: Tue, 25 Jun 2013 11:56:28 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>