Problema: Personalización de los Encabezados del Servidor Nginx
Los encabezados del servidor Nginx contienen información sobre el software del servidor, lo que puede exponer vulnerabilidades de seguridad. Personalizar estos encabezados puede mejorar la seguridad y ocultar información sensible de posibles atacantes.
Métodos para Personalizar los Encabezados del Servidor Nginx
Modificar la configuración de Nginx
Para personalizar los encabezados del servidor Nginx, puedes cambiar el archivo de configuración de Nginx. Esto implica editar el archivo nginx.conf, que generalmente se encuentra en el directorio /etc/nginx/. Una forma común de ajustar los encabezados del servidor es utilizando la directiva server_tokens.
Para editar el archivo nginx.conf, usa un editor de texto con privilegios de root:
sudo nano /etc/nginx/nginx.conf
En el archivo, puedes agregar o cambiar la directiva server_tokens. Para deshabilitar el número de versión en el encabezado del servidor, agrega esta línea dentro del bloque http {}:
server_tokens off;
Después de realizar cambios, guarda el archivo y reinicia Nginx para aplicar la nueva configuración:
sudo systemctl restart nginx
Consejo: Verificar Cambios en el Encabezado del Servidor
Después de realizar cambios en tu configuración de Nginx, puedes verificar las modificaciones del encabezado del servidor usando curl. Ejecuta el siguiente comando:
curl -I http://tu-dominio.com
Esto mostrará los encabezados HTTP devueltos por tu servidor, permitiéndote confirmar que los cambios se han aplicado correctamente.
Usar el módulo Headers More
Otro método para personalizar los encabezados del servidor Nginx es usar el módulo Headers More. Este módulo ofrece más control sobre los encabezados de respuesta HTTP.
Para usar el módulo Headers More:
- Instala el módulo. En sistemas Ubuntu o Debian, usa:
sudo apt-get install nginx-extras
- Después de la instalación, configura encabezados personalizados en tu archivo de configuración de Nginx. Para eliminar completamente el encabezado del servidor, agrega esta línea dentro del bloque server {}:
more_clear_headers Server;
Para establecer un encabezado de servidor personalizado, usa:
more_set_headers "Server: Mi Servidor Personalizado";
Recuerda reiniciar Nginx después de realizar estos cambios para aplicar la nueva configuración.
Guía Paso a Paso para Personalizar los Encabezados del Servidor Nginx
Deshabilitar completamente el encabezado del servidor
Para eliminar el encabezado del servidor en Nginx:
-
Abre tu archivo de configuración de Nginx:
sudo nano /etc/nginx/nginx.conf -
Agrega estas líneas dentro del bloque http {}:
server_tokens off; more_clear_headers Server; -
Guarda el archivo y sal del editor de texto.
-
Prueba la configuración para detectar errores de sintaxis:
sudo nginx -t -
Si no se encuentran errores, reinicia Nginx:
sudo systemctl restart nginx
Para verificar los cambios:
-
Usa curl para revisar los encabezados:
curl -I http://tu-dominio.com -
Busca el encabezado Server en la salida. Debería estar ausente.
Consejo: Verificar con las herramientas de desarrollo del navegador
También puedes usar las herramientas de desarrollo de tu navegador para revisar los encabezados del servidor. Abre las herramientas de desarrollo (generalmente F12), ve a la pestaña Network, recarga la página e inspecciona los encabezados de la solicitud de la página principal.
Cambiar el contenido del encabezado del servidor
Para modificar la información del encabezado del servidor:
-
Abre tu archivo de configuración de Nginx:
sudo nano /etc/nginx/nginx.conf -
Agrega esta línea dentro del bloque http {}:
more_set_headers "Server: Tu Nombre de Servidor Personalizado"; -
Guarda el archivo y sal del editor de texto.
-
Prueba la configuración:
sudo nginx -t -
Si no se encuentran errores, reinicia Nginx:
sudo systemctl restart nginx
Para probar el nuevo encabezado del servidor:
-
Usa curl para revisar los encabezados:
curl -I http://tu-dominio.com -
Busca el encabezado Server en la salida. Debería mostrar tu nombre de servidor personalizado.
Enfoques Alternativos
Usar la directiva proxy_pass_header
La directiva proxy_pass_header Server en Nginx te permite pasar el encabezado Server desde un servidor backend sin que Nginx lo cambie. Este método es útil cuando usas Nginx como proxy inverso y quieres mantener el encabezado del servidor original de tu aplicación backend.
Para usar este método:
-
Abre tu archivo de configuración de Nginx:
sudo nano /etc/nginx/nginx.conf -
Agrega esta línea dentro del bloque server {}:
proxy_pass_header Server; -
Guarda el archivo y reinicia Nginx:
sudo systemctl restart nginx
Este enfoque es bueno cuando quieres mantener sin cambios la información del encabezado del servidor de tu servidor backend, en lugar de cambiarla o eliminarla completamente.
Consejo: Solución de problemas con proxy_pass_header
Si la directiva proxy_pass_header no parece funcionar, verifica si tienes otras directivas que podrían estar anulándola, como proxy_hide_header o proxy_set_header. Estas directivas pueden interferir con proxy_pass_header si no están configuradas correctamente.
Usar scripting del lado del servidor
También puedes usar lenguajes de scripting del lado del servidor como PHP, Python u otros para cambiar los encabezados HTTP. Este método te da más opciones para manejar los encabezados de forma dinámica.
Por ejemplo, en PHP:
<?php
header("Server: Servidor PHP Personalizado");
?>
En Python (usando Flask):
from flask import Flask, make_response
app = Flask(__name__)
@app.after_request
def add_header(response):
response.headers['Server'] = 'Servidor Python Personalizado'
return response
Ventajas de este enfoque:
- Permite cambios dinámicos de encabezados basados en condiciones específicas
- Se puede integrar con la lógica de aplicación existente
Desventajas de este enfoque:
- Añade sobrecarga de procesamiento
- Puede no funcionar si los encabezados ya han sido enviados
- Requiere cambios en el código de la aplicación en lugar de en la configuración del servidor





